2012-07-30 32 views
0

之間的不同,我用這樣的方法,以獲得我的應用程序的URL路徑返回路徑:是本地和實時服務器

string strPathAndQuery = HttpContext.Request.Url.PathAndQuery; 
string strUrl = HttpContext.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/"); 

這應該路徑當前的URL。

問題是,我的實時服務器將應用程序作爲IIS服務器內的應用程序(文件夾)運行。所以測試時,我得到這樣一個URL:

http://localhost/Survey/Create 

而活着,我得到:

http://testurl.com/Survey/Create 

當什麼,我需要的直播服務器是:

http://testurl.com/SurveyApp/Survey/Create 

隨着SurveyApp作爲將應用程序存儲在IIS中的文件夾。有沒有一種方法可以獲取控制器所在的URL,無論物理位置如何?

回答

1

由於這個原因,MVC有方法,比如Url.Content。這些將在您使用像「〜/ Survey/Query」這樣的應用程序目錄相對路徑時解析正確的URL。你也可以使用像Html.ActionLink或Url.Action這樣的方法來獲取url到特定的操作方法。這些將根據您的正確路徑進行調整。

你能更具體地說明爲什麼你想要找到路徑嗎?

+0

我正在使用郵件組件發送排隊的電子郵件,並且需要包含指向特定控制器和操作的鏈接。由於它是郵件組件的主體消息,我不認爲我可以使用Razor語法。 – user547794 2012-07-30 17:00:54

+1

@ user547794 - 我提到的方法與Razor無關,除了可以從Razor調用它們。但是,您必須稍微按摩它們以獲取絕對路徑(這些方法僅提供相對URL) – 2012-07-30 17:05:11

0

您是否曾嘗試在相對URI前添加〜符號。例如,要鏈接/Survey/Query使用~/Survey/Query

編輯:

什麼HttpContext.Current.Request.ApplicationPath

+0

這不適用於MVC應用程序,除非您使用具有虛擬路徑感知的特定方法。 – 2012-07-30 16:53:45