更新 Visual Studio 2022 至 17.0.4 后发布 Blazor WASM 错误

Publish Blazor WASM error after update Visual Studio 2022 to 17.0.4

我将 Visual Studio 2022 更新到版本 17.0.4

后,将 Blazor WASM 项目发布到 Azure App Service 时遇到了一个奇怪的问题

下载到用户浏览器时,我使用 BrotliDecode 保持我的 Blazor WASM 最小大小,如 here

中提到的 Microsoft 文档

我正常进行了清理和重建,然后将其部署到我的 Azure 应用服务,但出现了错误

TypeError: Failed to execute 'arrayBuffer' on 'Response': body stream already read

blazor.webassembly.js:1 Uncaught (in promise) TypeError: Failed to execute 'arrayBuffer' on 'Response': body stream already read
at blazor.webassembly.js:1
at async blazor.webassembly.js:1
at async blazor.webassembly.js:1

奇怪的是这个错误只出现在非 www url,如果我尝试使用 www。在 url 中,应用程序工作正常。当我尝试转到通常为“/Identity/Account/Login”的服务器登录时,它会将我重定向回主页。我在这里有点困惑。

已编辑:此错误仅在 Google Chrome 中发生,并且仅在没有 www. 的 url 中发生,我的应用程序 运行 在 Firefox、Edge 和 Opera 上完美运行或没有 www。因此,我不确定这是 Chrome 问题还是我的配置有问题。

致所有寻求答案的人。我联系了 Azure 应用服务团队,这是一个已知问题,.NET 团队已经在处理这个问题。

我用这个技巧解决了这个问题。

1/ 删除没有 www 的自定义域。来自 Azure 应用服务中的自定义域。

2/ 从记录部分删除 Godaddy 上的 A 记录和 TXT asuid。

3/ 添加转发域到www.yourdomain.com

4/ 等待一个小时以完成转发。

5/ 从 Godaddy 中删除该转发。

6/ 删除Godaddy自动创建的转发给www.yourdomain.com的记录。

7/ 使用不带 www 的域在 Azure 应用服务上添加新的自定义域..

8/ 删除没有www的域的旧私钥证书。如果你忘了删除。

9/ 为您在上一步中刚刚创建的不带 www 的域创建一个新的私钥证书。

10/ 将新的私钥证书添加到没有 www 的域中。

11/ 稍等seconds/minutes 即可生效。

如果您仍然遇到此问题,重新安装 Chrome 将解决此问题

这只是一种欺骗 Google Chrome 来重新定义您的 url 的方法。转发和删除转发是我解决这个问题的方法。