Blazor项目部署IIS需先明确类型:WebAssembly仅需静态文件托管,用无托管代码应用池;Server需安装ASP.NET Core Hosting Bundle、启用AspNetCoreModuleV2和WebSocket,并配置web.config反向代理。

Blazor 项目发布并部署到 IIS,核心是把应用打包成静态文件(Blazor WebAssembly)或可执行的 .NET 应用(Blazor Server),再配置 IIS 正确托管。关键点在于发布方式、IIS 模块安装、网站配置和权限设置。
确认 Blazor 类型:WebAssembly 还是 Server?
两者部署方式完全不同,必须先明确:
- Blazor WebAssembly:纯前端应用,发布后是一堆静态文件(_framework、index.html 等),只需 IIS 当静态服务器用,无需 .NET 运行时。
- Blazor Server:服务端渲染,依赖 .NET 运行时和 SignalR 长连接,需要 IIS 启用 ASP.NET Core 模块,并托管为反向代理。
发布项目(Visual Studio 或 CLI)
在项目根目录执行发布命令,输出到指定文件夹:
- WebAssembly:
dotnet publish -c Release -o ./publish,输出内容可直接拷贝到 IIS 物理路径。 - Server:
dotnet publish -c Release -o ./publish --self-contained false(推荐依赖系统已安装的 .NET 运行时)。 - 确保发布前 App.razor 和 Program.cs 中的基路径(
)与 IIS 网站路径一致;若部署在根目录,保持。
IIS 基础配置(两者都需)
打开 IIS 管理器,新建网站或应用:
- 物理路径指向发布后的文件夹(如
C:\inetpub\wwwroot\myblazor)。 - 绑定:设置域名或 IP + 端口(如 http:80),注意避免端口冲突。
- 应用程序池:
• WebAssembly:用无托管代码的应用程序池(.NET CLR 版本选“无”);
• Server:必须选对应版本的 .NET CLR(如 .NET 6/7/8),且“托管管道模式”为“集成”。
Server 模式额外必需项
Blazor Server 依赖 ASP.NET Core 的反向代理能力,缺一不可:
- 在目标服务器安装 ASP.NET Core 运行时 Hosting Bundle(不是 SDK),官网下载对应 .NET 版本的 Hosting Bundle 并完整安装(含 Windows Server Hosting 模块)。
- 检查 IIS 中是否启用 ASP.NET Core Module:模块列表里应有
AspNetCoreModuleV2。 - 确保网站根目录下有 web.config 文件(发布时自动生成),内容包含
,且forwardWindowsAuthToken="false"(除非用 Windows 身份验证)。 - SignalR 需要 WebSocket 支持:IIS → 服务器功能 → 添加 WebSocket 协议(Windows 功能里启用)。
基本上就这些。WebAssembly 部署轻量但要注意路由(需配置 URL 重写处理客户端路由);Server 部署稍重但开发体验一致。别漏掉 Hosting Bundle 和 web.config —— 这两个是最常导致 500 或 502 错误的原因。










