2014-02-20 1 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 ('/') {строка [4]} [0]:. "HTTP:" [1]: "" [2]: "localhost: 58905" [3]: "default.aspx" ' – fortboise