将 Blazor 应用部署到 IIS 详解

将 Blazor 应用部署到 IIS 需根据项目类型(Blazor Server 或 Blazor WebAssembly)进行不同配置,以下是详细步骤:

Blazor 页面传参.png

一、部署前准备

  1. 服务器环境要求
    • 安装 .NET 运行时(根据项目目标框架选择,如 .NET 8.0):
      下载地址:.NET 下载
      (Blazor Server 需要安装 ASP.NET Core 运行时;Blazor WebAssembly 仅需静态文件服务,无需运行时)
    • 安装 IIS 及必要组件:
      打开「服务器管理器」→「添加角色和功能」,勾选:
      • Web 服务器(IIS)
      • Web 服务器 → 应用程序开发 → ASP.NET Core 模块(关键组件,用于托管 .NET 应用) (关键)

二、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 重写:

  1. 安装「URL 重写模块」:
    下载地址:IIS URL 重写
  2. 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>
    

四、常见问题解决

  1. 500.19 错误:通常是 IIS 配置文件权限问题,右键发布目录 →「属性」→「安全」,给「IIS_IUSRS」组添加读写权限。
  2. Blazor Server 连接断开:检查服务器防火墙是否允许 SignalR 所需端口(默认与网站端口一致),或在 Program.cs 中配置长连接超时:
    builder.Services.AddServerSideBlazor()
        .AddHubOptions(options => {
            options.ClientTimeoutInterval = TimeSpan.FromMinutes(5);
        });
    
  3. 静态文件加载失败:确认 IIS 「静态内容」功能已安装(服务器管理器 → Web 服务器 → 常见 HTTP 功能)。

通过以上步骤,可在 IIS 上成功部署 Blazor 应用。Blazor Server 需注意应用程序池配置,Blazor WebAssembly 需重点处理 MIME 类型和 SPA 路由。

  1. blazor server HTTP 错误 500.19 - Internal Server Error
    无法访问请求的页面,因为该页的相关配置数据无效。
1. 下载对应版本的托管模块:
2. 访问 ASP.NET Core 托管捆绑包 证应用程序池配置
确保 IIS 应用程序池配置与 Blazor Server 兼容:
打开 IIS 管理器 → 找到网站对应的应用程序池(默认与网站同名)。
右键应用程序池 → “高级设置”:
.NET CLR 版本:设置为 “无托管代码”(因 Blazor Server 是自托管的 .NET 应用)。
托管管道模式:设置为 “集成”。

image.png

posted @ 2025-09-11 16:07  东百牧码人  阅读(25)  评论(0)    收藏  举报