将 Blazor 应用部署到 IIS 详解
将 Blazor 应用部署到 IIS 需根据项目类型(Blazor Server 或 Blazor WebAssembly)进行不同配置,以下是详细步骤:
一、部署前准备
- 服务器环境要求
- 安装 .NET 运行时(根据项目目标框架选择,如 .NET 8.0):
下载地址:.NET 下载
(Blazor Server 需要安装 ASP.NET Core 运行时;Blazor WebAssembly 仅需静态文件服务,无需运行时) - 安装 IIS 及必要组件:
打开「服务器管理器」→「添加角色和功能」,勾选:- Web 服务器(IIS)
- Web 服务器 → 应用程序开发 → ASP.NET Core 模块(关键组件,用于托管 .NET 应用) (关键)
- 安装 .NET 运行时(根据项目目标框架选择,如 .NET 8.0):
二、Blazor Server 部署步骤
Blazor Server 依赖服务器运行,需通过 IIS 托管 ASP.NET Core 应用。
1. 发布项目
- 在 Visual Studio 中右键项目 →「发布」:
- 选择发布目标为「文件夹」,设置输出路径(如
D:\publish\BlazorServer)。 - 配置文件选择「Release」,点击「发布」生成部署文件。
- 选择发布目标为「文件夹」,设置输出路径(如
2. 配置 IIS 网站
- 打开「IIS 管理器」→ 右键「网站」→「添加网站」:
- 网站名称:自定义(如 BlazorServerSite)
- 物理路径:选择发布后的输出目录(如
D:\publish\BlazorServer) - 端口:设置未被占用的端口(如 8080)
3. 配置应用程序池
- 右键网站对应的应用程序池(默认与网站同名)→「高级设置」:
- .NET CLR 版本:选择 无托管代码(因 Blazor Server 是自托管的 .NET 应用)
- 托管管道模式:集成
4. 验证部署
- 在浏览器访问
http://服务器IP:8080,若能正常加载页面则部署成功。
三、Blazor WebAssembly 部署步骤
Blazor WebAssembly 是静态文件,部署更简单,只需 IIS 提供静态文件服务。
1. 发布项目
- 发布流程同 Blazor Server,但输出目录中
wwwroot文件夹包含所有静态资源(核心文件在_framework下)。 - 最终部署路径建议指向
wwwroot(如D:\publish\BlazorWasm\wwwroot)。
2. 配置 IIS 网站
- 「添加网站」时:
- 物理路径:指向发布后的
wwwroot目录(如D:\publish\BlazorWasm\wwwroot) - 端口:自定义(如 8081)
- 物理路径:指向发布后的
3. 配置 MIME 类型(关键)
Blazor WebAssembly 依赖 .wasm 等特殊文件类型,需在 IIS 中添加 MIME 类型:
- 选中网站 → 双击「MIME 类型」→「添加」:
- 扩展名:
.wasm - MIME 类型:
application/wasm
- 扩展名:
- 若缺少此配置,浏览器会因无法识别
.wasm文件导致加载失败(404 或 403 错误)。
4. 支持 SPA 路由(可选)
Blazor WebAssembly 是单页应用(SPA),刷新非首页可能出现 404 错误,需配置 URL 重写:
- 安装「URL 重写模块」:
下载地址:IIS URL 重写 - 在
wwwroot目录中创建web.config,添加重写规则:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="SPA Fallback" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Rewrite" url="/index.html" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
四、常见问题解决
- 500.19 错误:通常是 IIS 配置文件权限问题,右键发布目录 →「属性」→「安全」,给「IIS_IUSRS」组添加读写权限。
- Blazor Server 连接断开:检查服务器防火墙是否允许 SignalR 所需端口(默认与网站端口一致),或在
Program.cs中配置长连接超时:builder.Services.AddServerSideBlazor() .AddHubOptions(options => { options.ClientTimeoutInterval = TimeSpan.FromMinutes(5); }); - 静态文件加载失败:确认 IIS 「静态内容」功能已安装(服务器管理器 → Web 服务器 → 常见 HTTP 功能)。
通过以上步骤,可在 IIS 上成功部署 Blazor 应用。Blazor Server 需注意应用程序池配置,Blazor WebAssembly 需重点处理 MIME 类型和 SPA 路由。
- blazor server HTTP 错误 500.19 - Internal Server Error
无法访问请求的页面,因为该页的相关配置数据无效。
1. 下载对应版本的托管模块:
2. 访问 ASP.NET Core 托管捆绑包 证应用程序池配置
确保 IIS 应用程序池配置与 Blazor Server 兼容:
打开 IIS 管理器 → 找到网站对应的应用程序池(默认与网站同名)。
右键应用程序池 → “高级设置”:
.NET CLR 版本:设置为 “无托管代码”(因 Blazor Server 是自托管的 .NET 应用)。
托管管道模式:设置为 “集成”。

浙公网安备 33010602011771号