Skip to content

[Docs] IIS 404 after merging example web.config for brotli/gzip Blazor WASM #26897

@glararan

Description

@glararan

Describe the bug

After merging example web.config from https://docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?view=aspnetcore-3.1 with default web.config I get error 404 for all js/css/images

To Reproduce

Use in root folder following web.config (adjust arguments for aspNetCore)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\app.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
  <system.webServer>
        <staticContent>
      <remove fileExtension=".dat" />
      <remove fileExtension=".dll" />
      <remove fileExtension=".json" />
      <remove fileExtension=".wasm" />
      <remove fileExtension=".woff" />
      <remove fileExtension=".woff2" />
      <remove fileExtension=".js.gz" />
      <remove fileExtension=".dat.gz" />
      <remove fileExtension=".dll.gz" />
      <remove fileExtension=".json.gz" />
      <remove fileExtension=".wasm.gz" />
      <remove fileExtension=".js.br" />
      <remove fileExtension=".dat.br" />
      <remove fileExtension=".dll.br" />
      <remove fileExtension=".json.br" />
      <remove fileExtension=".wasm.br" />
      <mimeMap fileExtension=".dat" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".dll" 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" />
      <mimeMap fileExtension=".js.gz" mimeType="application/javascript" />
      <mimeMap fileExtension=".dat.gz" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".dll.gz" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".json.gz" mimeType="application/json" />
      <mimeMap fileExtension=".wasm.gz" mimeType="application/wasm" />
      <mimeMap fileExtension=".js.br" mimeType="application/javascript" />
      <mimeMap fileExtension=".dat.br" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".dll.br" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".json.br" mimeType="application/json" />
      <mimeMap fileExtension=".wasm.br" mimeType="application/wasm" />
    </staticContent>
    <httpCompression>
      <dynamicTypes>
        <remove mimeType="application/javascript" />
        <remove mimeType="application/json" />
        <remove mimeType="application/octet-stream" />
        <remove mimeType="application/wasm" />
      </dynamicTypes>
      <staticTypes>
        <remove mimeType="application/javascript" />
        <remove mimeType="application/json" />
        <remove mimeType="application/octet-stream" />
        <remove mimeType="application/wasm" />
      </staticTypes>
    </httpCompression>
    <rewrite>
      <outboundRules rewriteBeforeCache="true">
        <rule name="Add Vary Accept-Encoding" preCondition="PreCompressedFile" enabled="true">
            <match serverVariable="RESPONSE_Vary" pattern=".*" />
            <action type="Rewrite" value="Accept-Encoding" />
        </rule>
        <rule name="Add Encoding Brotli" preCondition="PreCompressedBrotli" enabled="true" stopProcessing="true">
            <match serverVariable="RESPONSE_Content_Encoding" pattern=".*" />
            <action type="Rewrite" value="br" />
        </rule>
        <rule name="Add Encoding Gzip" preCondition="PreCompressedGzip" enabled="true" stopProcessing="true">
            <match serverVariable="RESPONSE_Content_Encoding" pattern=".*" />
            <action type="Rewrite" value="gzip" />
        </rule>
        <preConditions>
            <preCondition name="PreCompressedFile">
                <add input="{HTTP_URL}" pattern="\.(gz|br)$" />
            </preCondition>
            <preCondition name="PreCompressedGzip">
                <add input="{HTTP_URL}" pattern="\.gz$" />
            </preCondition>
            <preCondition name="PreCompressedBrotli">
                <add input="{HTTP_URL}" pattern="\.br$" />
            </preCondition>
        </preConditions>
      </outboundRules>
      <rules>
        <rule name="Serve subdir">
          <match url=".*" />
          <action type="Rewrite" url="wwwroot\{R:0}" />
        </rule>
        <rule name="Rewrite brotli file" stopProcessing="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
            <add input="{REQUEST_FILENAME}.br" matchType="IsFile" />
          </conditions>
          <action type="Rewrite" url="{R:1}.br" />
        </rule>
        <rule name="Rewrite gzip file" stopProcessing="true">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTP_ACCEPT_ENCODING}" pattern="gzip" />
            <add input="{REQUEST_FILENAME}.gz" matchType="IsFile" />
          </conditions>
          <action type="Rewrite" url="{R:1}.gz" />
        </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>
        <security>
            <authentication>
                <windowsAuthentication enabled="false" />
                <anonymousAuthentication userName="" />
            </authentication>
        </security>
    </system.webServer>
</configuration>

Further technical details

  • ASP.NET Core version 3.1

Metadata

Metadata

Assignees

Labels

✔️ Resolution: DuplicateResolved as a duplicate of another issueDocsThis issue tracks updating documentationStatus: Resolvedarea-blazorIncludes: Blazor, Razor Componentsfeature-blazor-wasmThis issue is related to and / or impacts Blazor WebAssembly

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions