好的我們大多數人在將它們發佈到生產服務器之前,先在我們的本地主機上開發和測試Asp.NET Web應用程序。但對我來說,本地主機有時候是一種痛苦,因爲我無法正確地獲得絕對路徑。因爲讓我們說我的應用程序位於http://localhost/MyApp/
我無法正確獲取主機。我可以通過幾個代碼來獲得它,但是我希望使它更通用,所以無論何時其他開發人員將相同的應用程序放在另一個位置,例如http://localhost/TheirApp
,那麼它應該可以正常工作。如何處理Localhost中的相對路徑和絕對路徑
樣本問題:
每當我使用絕對路徑,這樣/aboutus.aspx
,它會導致這個http://localhost/aboutus.aspx
和省略MyApp
。如果我使用相對路徑,那麼它變成http://localhost/MyApp/IamHere.aspx/aboutus.aspx
,這是相當令人不安的。
因此,如果Request.Url.Authority
或Request.Url.Host
將返回http://localhost/MyApp
那麼我們可以使用這些附加我們的網址,並找到一個很好的解決方案。
的替代解決方案:
我可以這樣做:
if(Request.Url.Host.StartsWith("localhost"))
{
string[] segments = Request.Url.AbsolutePath.Split("/");
var localHost = Request.Url.Authority + "/" + segments[0];
}
然後我可以使用localHost
變量和我的道路追加到它。
但我喜歡瞭解你們是如何處理這樣的問題的?
感謝,
你甚至不需要代字符。使用裸文件名將是當前主機和端口的當前Web應用程序的當前目錄。或者你可以更明確地說同樣的事情./whatever.aspx – chris
如果我哭了?我怎麼總是忘記'〜/':/ – Tarik