为什么 Blazor 应用程序中的 XML 验证在本地主机上和作为 Azure 静态 Web 应用程序给出不同的消息?

2023-12-23

edit我做了一个简化的回购协议https://github.com/GilShalit/XMLValidation https://github.com/GilShalit/XMLValidation


我正在 Blazor WebAssembly (TargetFramework=net5.0) 中构建 XML 编辑器。部分功能涉及验证 XML 的完整性并根据具有三个包含的复杂 xsd 架构进行验证。

这些是我遵循的步骤:

  1. 构建一个 XmlSchemaSet 并通过为每个 xsd 调用以下方法向其中添加 4 个架构:
    private async Task loadSchema(string path, string nameSpace)
    {
        byte[] byteArrayS = await _client.GetByteArrayAsync(path);
        Console.WriteLine($"{path}: {byteArrayS.Length}");
        MemoryStream streamS = new MemoryStream(byteArrayS);
        XmlReader xmlSchemaReader = XmlReader.Create(streamS);
        schemaSet.Add(nameSpace, xmlSchemaReader);
    }
  1. 使用以下命令初始化事件处理程序:
ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
  1. 将 XML 加载到 XmlDocument 中:
        byte[] byteArrayX = Encoding.ASCII.GetBytes(await _editorTarget.GetValue());
        MemoryStream streamX = new MemoryStream(byteArrayX);
        XmlReader reader = XmlReader.Create(streamX);
        XmlDocument document = new XmlDocument();
        document.Load(reader);
  1. 根据 schemaSet 进行验证:
            document.Schemas = schemaSet;
            document.Validate(eventHandler);

步骤 3 和 4 在 Try...Catch 块内运行,并在 XML 格式不正确(例如缺少结束标记)时在本地运行,document.Load(reader);该行会产生一条错误消息,如下所示:

The 'publicationStmt1' start tag on line 9 position 11 does not match the end tag of 'publicationStmt'. Line 11, position 12.

这太棒了。但在部署到 Azure 的应用程序中验证类似情况会产生以下错误消息:Xml_MessageWithErrorPosition, Xml_TagMismatchEx, 11, 12.

当该行时,事件处理程序中会捕获架构验证错误document.Validate(eventHandler);运行后,典型的消息是:

The element 'fileDesc' in namespace 'http://www.tei-c.org/ns/1.0' has invalid child element 'publicationStmt1' in namespace 'http://www.tei-c.org/ns/1.0'. List of possible elements expected: 'editionStmt, extent, publicationStmt' in namespace 'http://www.tei-c.org/ns/1.0'.

但是当在 Azure 上运行时,消息是Sch_InvalidElementContentExpecting.

本地运行和 Azure 中运行的验证结果存在差异的原因是什么?

我尝试通过添加以下内容来禁用链接:

<ItemGroup>
  <BlazorLinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>

但这对已部署的应用程序没有任何影响,并且使用 Release 而不是 Debug 在本地运行也没有任何改变。

我还确保从 Azure 运行时实际加载了 4 个 xsd 文件。


所以这是一个功能而不是一个错误......

An issue https://developercommunity2.visualstudio.com/t/with-blazor-webassembly-xml-validation-errors-are/1356252我在 Dev 社区上打开,被 dotnet/runtime 团队收录并添加到 GitHub 问题跟踪器here https://github.com/dotnet/runtime/issues/49308.

事实证明,异常消息被删除以节省大小。

Using <UseSystemResourceKeys>false</UseSystemResourceKeys>启用异常消息,我必须说我没有看到大小增加。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Blazor 应用程序中的 XML 验证在本地主机上和作为 Azure 静态 Web 应用程序给出不同的消息? 的相关文章

随机推荐

  • SQLite Select 语句的更好性能

    我正在开发一个 Iphone 应用程序 用户可以在搜索栏中输入任何字符串并按下搜索按钮 之后应该会出现一个结果列表 在我的 SQLite 中 我有四列 a b c d 假设它们具有以下值 Dataset 1 a code1 b report
  • 检测icecast服务器的xslt实现中node-set()函数的可用性

    Icecast 包含一个基于的 XSLT 实现libxslt http xmlsoft org XSLT from xmlsoft http xmlsoft org 我想知道是否支持节点集 http www exslt org exsl f
  • Perl 模块知道它安装在哪里吗?

    我已经开始创建一个包含默认电子邮件模板的 Perl 包 清单看起来像这样 SendMyEmail pm SendMyEmail defualt email tt 目前我知道模块 和模板 在哪里 但模块本身知道它在磁盘上的位置吗 那么 如果没
  • 如何在 Go 中将 byte/uint8 数组编组为 json 数组?

    我有一个结构体 uint8会员和我正在写它json Marshal 问题是 它正在解释uint8s as chars 并且它输出一个字符串而不是数字数组 如果它是一个 我可以让它工作 int 但如果可以避免的话 我不想分配和复制这些项目 我
  • 无法将 module/mod_proxy_wstunnel.so 加载到服务器中

    最近我需要在apache2上集成一个websocket服务器 我发现apache2 4已经支持了websocket模块 mod proxy wstunnel http httpd apache org docs 2 4 mod mod pr
  • 从分叉终端运行 xcodebuild

    我正在尝试为 iPhone 应用程序设置自动构建服务器 我希望能够每晚进行临时测试版构建 以便测试人员可以跟踪开发情况 我已经成功设置了 xcode xcode 来执行即席构建 我还可以从命令行启动构建 xcodebuild configu
  • 尝试从空对象引用上的字段“android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView”读取

    我正在制作一个从 sql 获取数据并将其放入回收视图中的应用程序 我首先在列表视图中尝试过它 但我发现在回收视图中更容易 它基本上就像一个聊天系统应用程序 当我将数据添加到回收视图它在 logcat 中给了我这个错误 java lang N
  • GCP 堆栈中的 AWS SNS 等效项

    因此 我们花了近 6 个月的时间将当前的应用程序堆栈从 AWS 迁移到 GCP 现在我们陷入了 AWS SNS 部分 显然 GCP 堆栈中似乎没有任何服务可以简单地提供 SNS 的替代品 还是我错过了什么 现在 GCP 上的一切都运行得很好
  • 在 antd Form + ReactJs 中使用 antd Tooltip

    如果我输入无效的邮件 ID 我需要使用 antd 工具提示显示 无效的电子邮件 如何在ReactJS antd Form中使用它 我现在使用的代码是 div div
  • Azure 网站和 Azure Web 角色之间有什么区别

    新的和新的有什么实质性的区别 Azure 网站 https www windowsazure com en us home scenarios web sites 以及 ASP NET MVC 应用程序的传统 Azure Web 角色 我为
  • 返回这个而不是 void 有什么缺点吗?

    假设不是返回 void 方法 而是返回对该类的引用 即使它没有任何特定的语义意义 在我看来 它会给你更多关于如何调用方法的选择 允许你以类似流畅界面的风格使用它 而且我真的想不出任何缺点 因为你不需要做任何事情与返回值 甚至存储它 因此 假
  • git:有类似每个分支标签的东西吗?

    我有一些历史重写要做 为此我想暂时保持我原来的树完好无损 然而 重写的树也应该复制以前使用的标签 有没有比例如更少的手动选项在标签名称前面添加分支名称 不 git 中没有像每个分支标签那样的东西 所有分支和标签都只是 Git 中的引用 re
  • 排序算法值得在这里实施吗?

    我有一个正整数列表 我想将 3 个最大值存储在变量中h1 h2 and h3 其余值无关紧要 我考虑用一个int and realloc当内存被填满时 先对其进行排序 然后采用合适的排序算法 但这真的值得吗 因为我真的不需要对整个数组进行排
  • 如何检查 Java 中的字符串是否已到达末尾?

    我不想通过使用正式的方式来做到这一点for循环遍历字符串的所有元素 特定次数 字符串的长度 Java 中是否有任何字符始终位于每个字符串的末尾 就像 C 中的字符一样 您有两个基本选择 String myString ABCD for ch
  • 程序集版本“.001”变为“.1”

    在 WinForms 中我有一个 AssemblyVersion assembly AssemblyVersion 01 01 01 002 然而 当启动屏幕出现时 它完全忽略显示的零 1 1 1 2 作为非常不方便的版本 因为稍后我实际上
  • Python OS X - 从文件中获取“添加日期”信息

    你好 这是我的第一篇文章 我开始做一些编码Python今天在 OS X 上 我注意到 OS X 有这样的东西date added这是文件放入指定文件夹的时间 我正在尝试将该日期作为timestamp 但是没有一种类型有效 我已经尝试了我所知
  • iPhone 上的 HTML5 视频元素有边框

    我最近一直在构建一个应用程序 并在开始时播放加载动画 只是一个 mp4 视频 出于美观目的 除了 iPhone 之外 它在任何地方都可以正常工作 问题在于 视频的某些部分周围有一条灰线 每边并不相同 如果我尝试对页面进行屏幕截图 则线条将不
  • Pandas.groupby.apply() 中的内存泄漏?

    我目前正在使用 Pandas 进行一个 csv 源文件大约 600mb 的项目 在分析过程中 我将 csv 读入数据帧 对某些列进行分组并对分组的数据帧应用一个简单的函数 我注意到在此过程中我进入了交换内存 因此进行了基本测试 我首先在 s
  • Android 应用程序可以在模拟器中运行,但不能在设备中运行

    我使用 android 1 6 api 4 创建了一个 android 应用程序 android minSdkVersion 是 3 我使用的模拟器运行这个应用程序是2 2 它在模拟器中工作正常 然后我将其安装到 htc Hero andr
  • 为什么 Blazor 应用程序中的 XML 验证在本地主机上和作为 Azure 静态 Web 应用程序给出不同的消息?

    edit我做了一个简化的回购协议https github com GilShalit XMLValidation https github com GilShalit XMLValidation 我正在 Blazor WebAssembly