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

Posted

技术标签:

【中文标题】使用 IIS URL 重写动态设置 Blazor WASM 基本 href【英文标题】:Set Blazor WASM base href dynamically with IIS URL Rewrite 【发布时间】:2021-12-17 05:21:10 【问题描述】:

我有一个使用标准模板创建的 Blazor WASM 应用程序。在开发过程中,我一直在根目录下测试应用程序(示例页面:localhost:5000/login)。对于生产,我计划在 IIS 中使用 URL 重写作为应用程序的多个实例前面的反向代理,这些应用程序将使用 Kestrel 作为 Windows 服务运行。生产 URL 将类似于:

http://example.com/Instance1/login 重写为 http://webserver1:5000/login http://example.com/Instance2/login 重写为 http://webserver2:5000/loginhttp://example.com/Instance3/login 重写为 http://webserver3:5000/登录

如果我为每个实例设置基本 href,我的应用程序可以正常工作,但是有没有办法动态更改基本 href 标签,这样我就不必更改每个应用程序实例的 index.html 文件?有没有更好的方法来完成我的最终结果?

【问题讨论】:

可以将InstanceX的判断设置为instance(.*),这样IIS就会接受所有对instance的请求。 【参考方案1】:

我能够为此找到一个可行的解决方案:

    在 IIS 中设置 URL 重写以添加与路径匹配的标头(使用正则表达式中的变量) 将我的静态 index.html 页面更改为 Razor index.cshtml 页面。请注意,当我这样做时,我还必须将索引从 Blazor 客户端应用程序移动到服务器应用程序。另外,不要忘记将 MapFallbackToFile 调用更改为 MapFallbackToPage。 将代码添加到 index.cshtml 文件中,以检查自定义标头并设置 base href 标记。

【讨论】:

以上是关于使用 IIS URL 重写动态设置 Blazor WASM 基本 href的主要内容,如果未能解决你的问题,请参考以下文章

IIS5.1设置URL重写?

IIS URL 重写

在 IIS7 上使用 Joomla 重写 URL

IIS URL将Http重写为Https,排除单个URL

emlog在iis7的环境下设置url重写,解决不能静态,伪静态

无法使用 URL 重写出站规则更改 IIS 响应代码