首页 > 解决方案 > Blazor WASM 在生产环境和本地/开发中的不同行为

问题描述

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

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

标签: blazorblazor-webassemblyblazor-client-side

解决方案


<UseSystemResourceKeys>false</UseSystemResourceKeys> 

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


推荐阅读