【发布时间】:2021-04-05 17:32:31
【问题描述】:
在 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 不包含这些以保持下载的轻松,但我想知道:
为什么这里有不同的行为?如何在本地重现已发布的环境行为? 是否可以部署显示这些错误消息所需的模块。我如何识别这些是什么并确保它们被部署?
【问题讨论】:
标签: blazor blazor-webassembly blazor-client-side