将 Blazor WebAssembly 应用发布到 IIS 后,刷新页面显示 Http 404.0 未找到页面错误,如何解决?

Zhi Lv - MSFT 32,446 信誉分 Microsoft 供应商
2024-03-04T08:19:30.3+00:00

我发布了一个 Blazor WASM 示例应用,并将其部署在本地计算机的 IIS 中。 我能够从托管端口访问所有页面,

用户图像

但是,当我在计数器或天气上刷新页面时,我出现以下错误 - 主页刷新正在工作,其他两个页面有此问题。 浏览器正在根据“网络”选项卡中显示的内容查找天气文档

用户图像

我该如何解决这个问题?

注意: 此问题总结整理于:Blazor Web 程序集 - 刷新获取时 - HTTP 错误 404.0 - 未找到 - 在 IIS 中发布应用后

Blazor
Blazor
一个免费的开源 Web 框架,使开发人员能够使用 Microsoft 开发的 C# 和 HTML 创建 Web 应用。
23 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,746 信誉分 Microsoft 供应商
    2024-03-05T02:33:48.1766667+00:00

    你好,

    如果你只是通过Visual Studio 创建的 Blazor WebAssembly 应用并通过文件夹的方式发布到IIS。发布的文件夹内容将如下所示: 用户图像

    然后,应将 IIS 网站的文件夹设置为此文件夹,而不是 wwwroot 文件夹。如下路径(web.config 位于 wwwroot 之外,而不是在 wwwroot 文件夹内):

    用户图像

    然后,我们可以将其添加到 IIS 管理控制台中:

    用户图像

    下面是示例网站的 url 重写规则:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <staticContent>
          <remove fileExtension=".blat" />
          <remove fileExtension=".dat" />
          <remove fileExtension=".dll" />
          <remove fileExtension=".webcil" />
          <remove fileExtension=".json" />
          <remove fileExtension=".wasm" />
          <remove fileExtension=".woff" />
          <remove fileExtension=".woff2" />
          <mimeMap fileExtension=".blat" mimeType="application/octet-stream" />
          <mimeMap fileExtension=".dll" mimeType="application/octet-stream" />
          <mimeMap fileExtension=".webcil" mimeType="application/octet-stream" />
          <mimeMap fileExtension=".dat" mimeType="application/octet-stream" />
          <mimeMap fileExtension=".json" mimeType="application/json" />
          <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
          <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
          <mimeMap fileExtension=".woff2" mimeType="application/font-woff" />
        </staticContent>
        <httpCompression>
          <dynamicTypes>
            <add mimeType="application/octet-stream" enabled="true" />
            <add mimeType="application/wasm" enabled="true" />
          </dynamicTypes>
        </httpCompression>
        <rewrite>
          <rules>
            <rule name="Serve subdir">
              <match url=".*" />
              <action type="Rewrite" url="wwwroot\{R:0}" />
            </rule>
            <rule name="SPA fallback routing" stopProcessing="true">
              <match url=".*" />
              <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              </conditions>
              <action type="Rewrite" url="wwwroot\" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。