为什么Blazor应用程序中的XML验证在localhost和Azure静态Web应用程序上提供不同的消息?
编辑 我做了一个简化的回购协议为什么Blazor应用程序中的XML验证在localhost和Azure静态Web应用程序上提供不同的消息?,azure,xsd,xml-validation,blazor-webassembly,azure-static-web-app,Azure,Xsd,Xml Validation,Blazor Webassembly,Azure Static Web App,编辑 我做了一个简化的回购协议 我正在Blazor WebAssembly(TargetFramework=net5.0)中构建一个XML编辑器。部分功能涉及根据包含三个include的复杂xsd模式验证XML的完整性 以下是我遵循的步骤: 通过为每个xsd调用以下方法,构建XmlSchemaSet并向其中添加4个模式: 正在使用以下命令初始化事件处理程序: 将XML加载到XmlDocument中: 根据schemaSet进行验证: 步骤3和4在Try…Catch块中运行,当XML格式不正确时
我正在Blazor WebAssembly(TargetFramework=net5.0)中构建一个XML编辑器。部分功能涉及根据包含三个include的复杂xsd模式验证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\u messagewitherroposition,Xml\u tagmismatchx,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文件。Blazor似乎没有包含类中的本地化错误消息模板。我猜Blazor在通过CI/CD管道构建时会将其剥离。您的开发机器和构建代理可能具有不同的区域设置
我建议尝试使用以下方法来强制绑定所有区域性和/或基于en_US
加载不变区域性:
真的
真的
您还提到了调整,但根据文档,它只适用于版本
构建(您似乎还没有尝试部署调试版本)。所以我建议尝试部署应用程序的调试版本,以完全消除链接器
您还可以强制链接所有i18资源:
全部的
并将System.Xml
添加到LinkerConfig.Xml
中,以便无需进一步优化即可将其提供给客户端:
所以这是一个功能而不是一个bug
dotnet/runtime团队收集了一个我在Dev上打开的社区,并将其添加到GitHub问题跟踪器中
事实证明,删除异常消息是为了节省大小
使用false
启用异常消息,我必须说我没有看到大小增加。在Azure中运行时,是否使用Blazor服务器而不是Blazor WebAssembly?不,在静态Web应用程序上使用WebAssembly谢谢。我尝试了你的第一个和第二个建议,没有任何区别。问题:System.Xml文件是什么意思?如何部署调试构建(通过GitHub部署过程在Azure静态Web应用程序上)?
document.Schemas = schemaSet;
document.Validate(eventHandler);
The 'publicationStmt1' start tag on line 9 position 11 does not match the end tag of 'publicationStmt'. Line 11, position 12.
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'.
<ItemGroup>
<BlazorLinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>