使用 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的主要内容,如果未能解决你的问题,请参考以下文章