Blazor网站发布到IIS 10后运行报错 本地运行正常问题咨询
故障原因
- 核心报错原因是Blazor WebAssembly客户端运行时无法加载
Microsoft.AspNetCore.Components.Authorization5.0.0.0版本程序集。你的自定义JWTAuthenticationStateProvider类继承了该程序集中的AuthenticationStateProvider基类,是项目唯一依赖该程序集的入口,因此移除该类后程序可正常运行。 - 本地环境正常是因为开发环境默认已安装该依赖包,发布时未将该程序集正确打包到发布产物中,常见触发场景包括:
- Blazor WebAssembly客户端项目未显式安装对应版本的
Microsoft.AspNetCore.Components.AuthorizationNuGet包,仅通过其他包间接依赖,发布时被判定为未使用未打包 - 发布时开启了Blazor WebAssembly的程序集裁剪(Linker)功能,裁剪逻辑判定该程序集未被使用,将其从发布产物中移除
- Blazor WebAssembly客户端项目未显式安装对应版本的
解决方案
- 显式安装NuGet包
在Blazor WebAssembly客户端项目中安装与项目.NET版本匹配的Microsoft.AspNetCore.Components.AuthorizationNuGet包,你的项目为.NET 5版本,可安装最新的5.x稳定版。 - 调整裁剪配置(若开启了程序集裁剪)
如果需要保留裁剪功能优化包体积,可在客户端项目的.csproj文件中添加如下配置,将该程序集加入裁剪排除列表:
<ItemGroup> <TrimmerRootAssembly Include="Microsoft.AspNetCore.Components.Authorization" /> </ItemGroup>
如果不需要裁剪,可直接关闭裁剪功能:
<PropertyGroup> <BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking> </PropertyGroup>
- 验证发布产物
重新发布项目后,检查发布目录下的wwwroot/_framework文件夹,确认存在Microsoft.AspNetCore.Components.Authorization.dll文件,再部署到IIS即可。
内容的提问来源于stack exchange,提问作者AliNajafZadeh
相关产品推荐
相关产品推荐

