Blazor WASM - IIS 上的独立部署

Posted

技术标签:

【中文标题】Blazor WASM - IIS 上的独立部署【英文标题】:Blazor WASM - Standalone Deployment on IIS 【发布时间】:2021-02-09 04:13:20 【问题描述】:

我正在尝试按照here 的说明在 IIS 上部署 Blazor WASM 应用。

这只是开箱即用的示例 Blazor WASM 应用 我已将应用发布到文件夹中 我已将 URL 重写模块添加到 IIS 我已向 IIS 添加了动态压缩支持 我在默认网站中创建了一个新的 Web 应用,并将其指向我发布 Blazor 应用的文件夹

调用应用程序会生成一个页面,其中包含“发生未处理的错误。重新加载”。

查看浏览器开发工具中的请求,index.html 是从 wwwroot 文件夹中提取的,这表明 url 重写规则正在触发,但是对 css/bootstrap.min.css、_framework/blazor.webassembly 的请求.js 和 css/app.css 都失败,状态为 404 - Not Found。

我错过了什么?

Windows 10 2004。

【问题讨论】:

【参考方案1】:

尝试在 index.html 文件中设置基本路径:

<base href="/CoolApp/">

下面是iis应用文件夹路径:

您可以将其设置为您的发布文件夹。

web.conifg 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <remove fileExtension=".dat" />
      <remove fileExtension=".dll" />
      <remove fileExtension=".json" />
      <remove fileExtension=".wasm" />
      <remove fileExtension=".woff" />
      <remove fileExtension=".woff2" />
      <mimeMap fileExtension=".dll" 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>

索引文件:

输出:

注意:确保将 iis_iusrs 和 iusr 权限分配给站点文件夹。

https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/?view=aspnetcore-3.1&tabs=visual-studio

【讨论】:

将应用程序路径添加到 标记可以解决问题 - 谢谢!

以上是关于Blazor WASM - IIS 上的独立部署的主要内容,如果未能解决你的问题,请参考以下文章

Blazor WASM 部署到 IIS 对象引用未设置为对象的实例

使用 IIS URL 重写动态设置 Blazor WASM 基本 href

Cors Policy 问题 Blazor WASM、Web API 和 Identity Server 4 和 IIS

尽管 Fiddler 显示收到了正确的响应,但 Blazor WASM 上的 HttpClient.SendAsync 返回空 HttpResponseMessage

使用客户端、服务器部署解决方案并共享到 azure(Blazor wasm,.net core api)[重复]

使用身份验证托管的 Blazor Wasm 上出现 Azure 500 错误