0

我有两个代码完全相同的 blazor 应用程序,一个在 url 上运行,https://subdomain1.domain.com另一个在https://subdomain2.domain.com

这些应用程序是托管的 blazor webassembly。他们坐在nginx后面。subdomain1 在端口 5001 上运行,而 subdomain2 在 4001 上运行。

尽管代码完全是彼此的副本,但一个有效,另一个给出了完整性错误。

Failed to find a valid digest in the 'integrity' attribute for resource 'https://subdomain2.domain.com/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll' with computed SHA-256 integrity 'iv4AO84pmcItgSK0QEAXm56IouVakVhOaLOsHuhCELY='. The resource has been blocked.

Unknown error occurred while trying to verify integrity.

我看到请求进入并在 nginx 日志中传递

000.000.000.000 - - [10/Sep/2021:21:59:44 +0100] "GET /_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll HTTP/1.1" 200 27798 "https://subdomain2.domain.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.38"

我无法弄清楚为什么一个子域会给出框架 DLL 的完整性错误,而另一个没有,因为有人遇到过这样的事情?

4

1 回答 1

0

长话短说,问题出在压缩文件中。所以,我的应用程序在 net6-preview6 中。前段时间我安装了preview7,但是全球化出现了问题,所以我不得不卸载preview7。

当我从 Visual Studio 2019 发布时,它发布了Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll预览版 6,但是......Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.br并且 Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.gz里面包含了预览版 7 的 dll。

我是通过使用 7zip 解压 gz 发现的。

它在 subdomain1 上工作的唯一原因是该文件已存在于缓存中。

我删除了解决方案中的所有 ./bin ./obj 文件夹并重新构建了所有内容。不知道压缩文件是如何与预览版一起出现的,但现在我知道,在发布之前我需要运行我的清理工作。dotnet clean还不够,我不得不删除实际的文件夹。

于 2021-09-10T23:58:27.243 回答