Blazor应用可部署到IIS,Blazor Server需ASP.NET Core运行时和正确web.config,Blazor WebAssembly需配置.wasm MIME类型及URL重写规则回退至index.html。

Blazor 应用(尤其是 Blazor Server 和 Blazor WebAssembly)可以顺利部署到 Windows Server 的 IIS 上,但需注意两者部署方式不同:Blazor Server 是服务端渲染,依赖 SignalR 连接;Blazor WebAssembly 是纯前端静态文件,需正确配置 MIME 类型和重定向规则。
Blazor Server 部署到 IIS
Blazor Server 本质是一个 ASP.NET Core 应用,部署方式与普通 ASP.NET Core MVC/ Razor Pages 应用一致:
- 发布项目:在 Visual Studio 中右键项目 → “发布” → 选择“文件夹”,或使用命令行
dotnet publish -c Release -o ./publish - 确保目标服务器已安装 ASP.NET Core 运行时(非 SDK),版本需与项目目标框架匹配(如 .NET 6/7/8)
- 在 IIS 中新建网站或应用池,应用池 .NET 版本选“无托管代码”,启动模式为“集成”,并启用“32位应用程序”(仅当依赖 x86 组件时)
- 物理路径指向发布后的文件夹(含
web.config),IIS 会自动识别并托管 - 确认
web.config存在且内容正确(发布时自动生成),重点检查aspNetCore段中processPath和arguments是否指向正确的 DLL
Blazor WebAssembly 部署到 IIS
这是静态站点部署,不运行 .NET 后端,只需 IIS 提供文件服务 + 正确路由回退(避免刷新 404):
- 发布客户端项目(通常是
Client子项目):dotnet publish -c Release -o ./publish,输出的是纯 HTML/JS/WASM 文件 - 将发布文件夹全部复制到 IIS 网站根目录(如
C:\inetpub\wwwroot\myapp) - 在网站根目录添加
web.config(若不存在),配置 URL 重写,确保所有非文件请求都返回index.html:
&conditions>
- 确保 IIS 已启用 URL 重写模块(需单独下载安装)
- 添加
.wasmMIME 类型(上面web.config已包含),否则 WASM 文件会 404
常见问题与检查点
部署后访问异常?快速排查这几项:
-
HTTP 500.19 错误:通常是
web.config语法错误,或 IIS 模块缺失(如 URL Rewrite、AspNetCoreModuleV2) - HTTP 502.5 或 500.30:ASP.NET Core 运行时未安装,或应用池未设为“无托管代码”,或 DLL 路径不对
-
空白页 / 加载失败 / WASM 404:检查浏览器开发者工具 Network 标签,看
dotnet.wasm是否返回 404 → 补上.wasmMIME 类型 - 路由刷新 404(WebAssembly):确认 URL 重写规则生效,且规则作用于正确站点层级(建议放在站点根 web.config,而非子文件夹)
-
SignalR 连接失败(Server):检查 IIS 是否启用了 WebSocket(IIS 8+ 默认开启),或反向代理(如 ARR)是否转发了升级头(
Upgrade,Connection)
补充建议
提升稳定性和可维护性的小技巧:
- 用
dotnet publish的--self-contained false(默认)以减小体积,但务必在服务器装对应运行时 - 生产环境关闭
web.config中的stdoutLogEnabled="true",避免日志文件暴增 - Blazor Server 建议配合
UseForwardedHeaders()(若前端有反向代理/Nginx) - WebAssembly 项目若用 API 后端,确保跨域(CORS)或代理配置正确(开发时用
proxy.conf.js,生产需统一域名或配 CORS)
基本上就这些。关键不是“能不能”,而是“配对没配对”——运行时、模块、MIME、重写规则,四者齐备,部署就很稳。










