在 Blazor(使用 .NET 5)中使用 XML 验证时,如果生成错误,则会在本地开发环境(调试或发布模式)中按预期报告错误消息,但在生产环境(即发布到静态 blob - 没有 ASP.NET 服务器)
在下面的代码中,我故意生成一个错误来说明问题。
protected override async Task OnAfterRenderAsync(bool firstRender)
{
var xml = "I am not XML";
// Create the XmlReader object from the string
using (var reader = XmlReader.Create(new XmlTextReader(new StringReader(xml)), new XmlReaderSettings
{
ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings
}))
{
try
{
while (reader.Read()) ;
}
catch (XmlException exception)
{
Console.WriteLine (exception.Message);
}
}
预期的错误信息是:
<块引用>根级别的数据无效。第 1 行,位置 1。
但是,在发布/生产环境中,这是:
<块引用>Xml_MessageWithErrorPosition, Xml_InvalidRootData, 1, 1
我猜这些 Xml_ 引用是 Microsoft 内部字符串引用,在已发布的环境中不可用,并且 Blazor 不包含这些以保持下载量,但我想知道:
为什么这里有不同的行为?如何在本地重现发布的环境行为? 是否可以部署显示这些错误消息所需的所需模块。我如何确定这些是什么并确保部署它们?
答案 0 :(得分:0)
<UseSystemResourceKeys>false</UseSystemResourceKeys>
解释