2011-12-01 50 views
0

我在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來做一些魔術,但我不確定這是否值得麻煩。 –

回答

1

您可能需要訪問請求上下文,並在請求管道的早期修改URL,以便在UrlHelper觸發時,Request.RawUrl返回具有前綴的正確路徑。很好的問題,因爲我會盡快提出一個邏輯。