2014-02-20 62 views
2

我想在ASP.NET應用程序中記錄我的服務器名稱,我使用多服務器和負載平衡,因此我需要記錄服務器名稱。在ASP.NET中獲取服務器名稱的不同方式

但是,獲得服務器名稱的這些方法有什麼區別?

哪一個是真的或更好的登錄?

有什麼想法嗎?

或其他方式?

System.Environment.MachineName 
Server.MachineName 
System.Net.Dns.GetHostName() 

也有另一種方式,但並不總是返回正確的服務器名稱:

Request.ServerVariables["SERVER_NAME"] 
System.Net.Dns.GetHostEntry(Request.ServerVariables("SERVER_NAME")).HostName 
System.Net.Dns.GetHostEntry(Request.ServerVariables("LOCAL_ADDR")).HostName 

回答

0

我總是喜歡簡單和故障安全解決方案。我建議將應用程序設置添加到應用程序web.config中,並手動爲每個服務器填充所需的名稱。

<appSettings> 
    <add key="ServerName" value="Server_1" /> 
</appSettings> 

您可以在此設置後閱讀:

string serverName = ConfigurationSettings.AppSettings["ServerName"]; 

這樣,您將獲得您的服務器名稱全手動控制。

0

我知道這是一個老問題。我正在尋找同一問題的答案 獲取確切的服務器名稱
所以我想回答這個沒有答案問題。 這是我的解決方案。

  string url=HttpContext.Current.Request.Url.ToString(); 
      string[] tempArray = url.Split('/'); 
      string serverName = tempArray[0] + "/" + tempArray[1] + "/" + tempArray[2] ; 

這樣你會得到確切的服務器名稱

+0

看起來,這將使你**訪問http // subdomain.host.tld [:端口] **實際。例如: 'HttpContext.Current.Request.Url.ToString().Split('/') {string [4]} [0]:「http:」 [1]:「」 [2]: 「localhost:58905」 [3]:「default.aspx」 – fortboise