使用 IIS URL 重写动态设置 Blazor WASM 基础 href
Set Blazor WASM base href dynamically with IIS URL Rewrite
我有一个使用标准模板创建的 Blazor WASM 应用程序。在开发过程中,我一直在根目录(示例页面:localhost:5000/login)中测试应用程序。对于生产,我计划在 IIS 中使用 URL 重写作为应用程序多个实例前的反向代理,这些实例将 运行 使用 Kestrel 作为 Windows 服务。生产 URLs 将类似于:
http://example.com/Instance1/login 重写为 http://webserver1:5000/login
http://example.com/Instance2/login 重写为 http://webserver2:5000/login
http://example.com/Instance3/login 重写为 http://webserver3:5000/login
如果我为每个实例设置基本 href,我的应用程序工作正常,但是有什么方法可以动态更改基本 href 标记,这样我就不必更改每个应用程序实例的 index.html 文件?有没有更好的方法来实现我的最终结果?
我为此找到了可行的解决方案:
- 设置 URL 在 IIS 中重写以添加匹配路径的 header(使用正则表达式中的变量)
- 将我的静态 index.html 页面更改为 Razor index.cshtml 页面。请注意,当我这样做时,我还必须将索引从 Blazor 客户端应用程序移动到服务器应用程序。另外,不要忘记将
MapFallbackToFile
调用更改为 MapFallbackToPage
.
- 将代码添加到 index.cshtml 文件以检查自定义 header 并设置
base href
标签。
我有一个使用标准模板创建的 Blazor WASM 应用程序。在开发过程中,我一直在根目录(示例页面:localhost:5000/login)中测试应用程序。对于生产,我计划在 IIS 中使用 URL 重写作为应用程序多个实例前的反向代理,这些实例将 运行 使用 Kestrel 作为 Windows 服务。生产 URLs 将类似于:
http://example.com/Instance1/login 重写为 http://webserver1:5000/login
http://example.com/Instance2/login 重写为 http://webserver2:5000/login
http://example.com/Instance3/login 重写为 http://webserver3:5000/login
如果我为每个实例设置基本 href,我的应用程序工作正常,但是有什么方法可以动态更改基本 href 标记,这样我就不必更改每个应用程序实例的 index.html 文件?有没有更好的方法来实现我的最终结果?
我为此找到了可行的解决方案:
- 设置 URL 在 IIS 中重写以添加匹配路径的 header(使用正则表达式中的变量)
- 将我的静态 index.html 页面更改为 Razor index.cshtml 页面。请注意,当我这样做时,我还必须将索引从 Blazor 客户端应用程序移动到服务器应用程序。另外,不要忘记将
MapFallbackToFile
调用更改为MapFallbackToPage
. - 将代码添加到 index.cshtml 文件以检查自定义 header 并设置
base href
标签。