Blazor WASM 在生产环境和本地/开发中的不同行为

时间:2021-04-05 17:32:31

标签: blazor blazor-webassembly blazor-client-side

在 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 不包含这些以保持下载量,但我想知道:

为什么这里有不同的行为?如何在本地重现发布的环境行为? 是否可以部署显示这些错误消息所需的所需模块。我如何确定这些是什么并确保部署它们?

1 个答案:

答案 0 :(得分:0)

<UseSystemResourceKeys>false</UseSystemResourceKeys> 

问题在 https://github.com/dotnet/runtime/issues/49308

解释