Blazor 应用怎么部署到 IIS

来源:这里教程网 时间:2026-02-21 17:41:12 作者:

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
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Handle React Router History">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          &conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
    <staticContent>
      <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
    </staticContent>
  </system.webServer>
</configuration>
确保 IIS 已启用 URL 重写模块(需单独下载安装) 添加
.wasm
MIME 类型(上面
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 → 补上
.wasm
MIME 类型
路由刷新 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、重写规则,四者齐备,部署就很稳。

相关推荐