2013-07-15 4 views
3

Я пытаюсь получить общедоступный IP-адрес клиента, используя приложение asp.net (mvc4). когда я использую HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"], если даёт мне пустую строку, и когда я использую HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], она отправляет строку типа «:: 1» (без двойных кавычек). связано ли это с IIS express ??? как я могу получить IP-адрес клиента с помощью asp.net?asp.net HttpContext.Current.Request.ServerVariables не работает

спасибо.

+1

Вы используете как клиент, так и сервер на одном компьютере, а не через прокси. Нет прокси == Нет HTTP_X_FORWARDED_FOR. Тот же самый компьютер, ':: 1' является адресом loopback (a.k.a' localhost') –

ответ

4

Вот метод я использую, чтобы получить IP-адрес:

private static string GetIPAddress() 
    { 
     try 
     { 
      if (System.ServiceModel.OperationContext.Current != null) 
      { 
       var endpoint = OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; 
       return endpoint.Address; 
      } 
      if (System.Web.HttpContext.Current != null) 
      { 
       // Check proxied IP address 
       if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) 
        return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + " via " + 
         HttpContext.Current.Request.UserHostAddress; 
       else 
        return HttpContext.Current.Request.UserHostAddress; 

      } 
     } 
     catch { } 
     return "Unknown"; 
    } 

Обратите внимание, что первый раздел для WCF служб, поскольку этот код из моего протоколирования кода, который совместно с обеих WCF и веб-проектов, так что вы может потребоваться второй раздел. Вы не получите IP-адрес, если вы поражаете свой локальный хост во время разработки - вы получите «:: 1», как вы заметили. Но вы получите его, если его развернете на сервере.

+0

спасибо, мой код очень похож на вторую часть вашего кода. я развожу его и посмотрю. – dafriskymonkey

+0

им также интересно, есть ли какой-нибудь сервер, который может дать мне IP-адрес клиента, сделав ему вызов ajax? – dafriskymonkey

+0

Я просто разворачиваю его и отлично работает, большое спасибо tombala. – dafriskymonkey

Смежные вопросы