Blazor WebAssembly - 如何在自动生成的 web.config 中添加 "http to https" URL 重写规则
Blazor WebAssembly - how to add a "http to https" URL rewrite rule in auto-generated web.config
我有一个 Blazor WebAssembly 应用程序,如果用户试图通过 http 访问网页,我想自动重定向到 https。
对于其他非 WASM 站点,我会在 IIS 配置中执行此操作,使用“URL Rewrite”将任何此类调用重定向到 https 等效项。这些规则直接存储在 web 文件夹中的 web.config 文件中。
但是,将 Blazor WebAssembly 应用发布到 IIS 时,Visual Studio 会创建自己的 web.config 文件
其中包含其他 url 将 SPA 所需的规则重写为 run/route 正确:
发布到 IIS 后,我可以进入并创建我的“http -> https”规则,然后将其添加到之前生成的 web.config 文件中。
然后从 http 重定向到 https 就可以了。
但是,每次我将应用程序发布到 IIS 时,这个 web.config 文件都会被覆盖,我的 http 到 https 规则也会丢失。
有没有办法在 Visual Studio Blazor WebAssembly 项目中的某处定义此重定向规则,以便它自动包含在自动生成的 web.config 中?
任何指导将不胜感激。
<Target Name="CopyWebConfigOnPublish" AfterTargets="Publish">
<Copy SourceFiles="web.config" DestinationFolder="$(PublishDir)" />
</Target>
应该可以解决问题。原始来源 here.
在项目根目录新建web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".blat" />
<remove fileExtension=".dat" />
<remove fileExtension=".dll" />
<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=".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>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
<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>
并将以下行添加到您的项目文件中:
<PropertyGroup>
<PublishIISAssets>true</PublishIISAssets>
</PropertyGroup>
我有一个 Blazor WebAssembly 应用程序,如果用户试图通过 http 访问网页,我想自动重定向到 https。
对于其他非 WASM 站点,我会在 IIS 配置中执行此操作,使用“URL Rewrite”将任何此类调用重定向到 https 等效项。这些规则直接存储在 web 文件夹中的 web.config 文件中。
但是,将 Blazor WebAssembly 应用发布到 IIS 时,Visual Studio 会创建自己的 web.config 文件 其中包含其他 url 将 SPA 所需的规则重写为 run/route 正确:
发布到 IIS 后,我可以进入并创建我的“http -> https”规则,然后将其添加到之前生成的 web.config 文件中。
然后从 http 重定向到 https 就可以了。
但是,每次我将应用程序发布到 IIS 时,这个 web.config 文件都会被覆盖,我的 http 到 https 规则也会丢失。
有没有办法在 Visual Studio Blazor WebAssembly 项目中的某处定义此重定向规则,以便它自动包含在自动生成的 web.config 中?
任何指导将不胜感激。
<Target Name="CopyWebConfigOnPublish" AfterTargets="Publish">
<Copy SourceFiles="web.config" DestinationFolder="$(PublishDir)" />
</Target>
应该可以解决问题。原始来源 here.
在项目根目录新建web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".blat" />
<remove fileExtension=".dat" />
<remove fileExtension=".dll" />
<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=".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>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
<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>
并将以下行添加到您的项目文件中:
<PropertyGroup>
<PublishIISAssets>true</PublishIISAssets>
</PropertyGroup>