Blazor WebAssembly发布Azure遇dotnet.js缺失及MIME类型错误求助
Blazor WebAssembly发布到Azure出现dotnet.js加载失败的解决办法
问题核心
发布到Azure后,dotnet.js文件缺失或请求返回text/html类型,导致模块加载失败;本地运行正常,新建项目也出现相同问题,说明问题大概率出在Azure配置或发布流程上。
排查与解决步骤
1. 核对Azure运行时版本
- 登录Azure门户,打开目标App Service,进入设置>配置>常规设置,确认.NET运行时版本和项目使用的版本完全匹配(比如项目用.NET 8,Azure也要选对应版本的ASP.NET Core Runtime)
- 如果是静态Web Apps,检查构建预设是否选择了Blazor相关选项
2. 确保发布时文件完整上传
- 在Visual Studio的发布配置里,勾选删除目标上的额外文件,重新发布,避免旧文件残留干扰
- 用Kudu工具(访问
https://<你的应用名>.scm.azurewebsites.net)进入Debug console > CMD,查看site/wwwroot/_framework目录下是否存在dotnet.js。如果未找到,直接从本地发布输出目录(一般在bin/Release/netX/publish/wwwroot/_framework)手动上传该文件及整个_framework文件夹
3. 修复MIME类型配置
- 如果Kudu中存在
dotnet.js但访问返回text/html,说明MIME类型配置错误。在项目根目录添加web.config文件,内容如下:
<configuration> <system.webServer> <staticContent> <remove fileExtension=".js" /> <mimeMap fileExtension=".js" mimeType="application/javascript" /> <remove fileExtension=".wasm" /> <mimeMap fileExtension=".wasm" mimeType="application/wasm" /> <remove fileExtension=".json" /> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent> </system.webServer> </configuration>
- 重新发布项目,确保
web.config上传到Azure的wwwroot目录
4. 清除Azure端缓存并重启服务
- 在App Service的概述页面,点击重启按钮,彻底重启应用
- 如果使用了CDN或Azure Front Door,手动清除对应资源的缓存
5. 检查部署槽(若使用)
- 若项目使用部署槽,确认槽的配置与生产槽一致,交换槽时未出现文件丢失情况
- 可尝试直接发布到生产槽,跳过部署槽测试
内容的提问来源于stack exchange,提问作者Michael Washington
相关产品推荐
相关产品推荐

