替代应用程序根

问题描述:

我在iis中有一个应用程序,可用作http://localhost/app/,这意味着由UrlHelper创建的所有相关链接均解析为http://localhost/app/???替代应用程序根

例子: Url.Content("~/images/background.png")分解成/app/images/background.png

现在的问题是,ISA服务器将应用程序添加前缀,使应用程序可从外部为http://foo.com/prefix/app/???

现在MVC将正确处理该请求,因为它仍然认为请求路径只是/app/???,但在使用UrlHelper时不会生成与该前缀的链接。

所以问题是 - 有没有什么办法可以告诉MVC生成不同于iis中定义的虚拟路径的链接?

举例: Url.Content("~/images/background.png")应显示为/prefix/app/images/background.png

我真的不希望创建自己的UrlHelper扩展,因为这不会影响这样的东西Html.ActionLinkRedirectToAction

+0

您是否找到解决您的问题的方法?我有完全相同的问题... –

+0

不幸的是没有。我最终通过在URL助手上编写包装器来“解决”它,只是在它们前面加上了所有url。你可以在'BeginRequest'或者@Roman提到的地方改变请求的URL来做一些魔术,但我不确定这是否值得麻烦。 –

您可能需要访问请求上下文,并在请求管道的早期修改URL,以便在UrlHelper触发时,Request.RawUrl返回具有前缀的正确路径。很好的问题,因为我会尽快提出一个逻辑。