设置
- ASP.NET-Core Web 应用程序托管在
https://first-domain.com/
- 使用负载平衡器将站点置于以下位置
https://second-domain.com/some/path
,以便请求将请求https://second-domain.com/some/path/Page1
传递给https://first-domain.com/Page1
- 转发请求时发送标头:
X-Original-Host = 'second-domain.com'
X-Original-BasePath = 'some/path'
X-Original-Url = 'https://second-domain.com/some/path/Page1'
- 页面使用 ASP.NET 根路径字符 (
~
) 来引用相对于应用程序根的资源。 - 使用ASP.NET-Core 中间件根据标头动态路由请求。
问题
我的中间件正确地将请求路由到页面。根据标头,请求https://second-domain.com/some/path/PageX
正确检索https://first-domain.com/PageX
.
但是,PageX
使用 ASP.NET 根路径字符 ( ~
) 的 URL 正在解析为,/
因此客户端会尝试访问https://second-domain.com/
不存在的资源。
例如,如果PageX.cshtml
有一个<img src="~/myImage.png>
标签,客户端的浏览器将尝试检索资源https://second-domain.com/myImage.png
而不是https://second-domain.com/some/path/myImage.png
问题
有没有办法使用ASP.NET-Core 中间件来操作请求和/或响应,以便~
动态解析ASP.NET 根路径 ( )?
换句话说,我正在尝试动态设置虚拟路径,而不使用通过 IIS/Azure 使用基础结构定义的虚拟路径。