簡體   English   中英

Request.Url.Host vs Request.Url.Authority

[英]Request.Url.Host vs Request.Url.Authority

我繼承了用C#編寫的ASP.NET Web應用程序。 在整個站點的許多頁面中,使用以下命令檢索主機名:

BaseHost = Request.Url.Host;

由於我使用的是Visual Studio 2012 Express並且它安裝了本地IIS Express服務器,因此當我在本地調試/運行時,我似乎卡在了附加到主機名(localhost)的端口號。 上面的代碼不會導致包含端口號,因此會破壞由代碼生成的鏈接(菜單項鏈接,重定向等)。

我看到我可以通過將代碼更改為:

BaseHost = Request.Url.Authority;

這似乎是通過在我本地運行時(localhost:4652)包含端口以及發布到我的登台服務器(development.mysite.com)時修復它。

我的問題:這是不好的形式? 是否有時間或情況會導致我的實際網站出現問題? 快速替換所有這些實例似乎要容易得多。 我已經考慮過編寫一個小例程來追加: with Request.Url.Port ,但是使用Request.Url.Authority似乎更容易。 太容易了......

我試圖在線和MSDN上研究我的問題,但我沒有看到答案。

根據MSDN Authority包括端口號,而Host不包括。 另一個方面是如果需要, Authority將逃脫保留字符。

在不知道你的應用程序的情況下很難說它是否是一個好主意,但總的來說我會懷疑它不會破壞任何東西......所以繼續......

另一種選擇是運行應用程序IIS而不是IIS Express ...

我的問題是它總是添加端口,即使不需要端口。 在某些情況下,這可能會導致多個服務器出現問題例如,在一對負載均衡的Web服務器上的防火牆后面的生產服務器環境中,它會保留防火牆端口,但這導致URL因端口而中斷綁定到服務器場中的特定Web服務器,該服務器無法通過防火牆正確映射。 如果你在多個服務器上使用它,我會非常小心這個方法。 它導致我們的應用程序出現問題,必須恢復使用Url.Host。 此外,它使生產網址看起來與端口號一樣奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM