Получение IP-адреса сервера в ASP.NET? - PullRequest
31 голосов
/ 14 марта 2009

Как мне получить IP-адрес сервера, который вызывает мою страницу ASP.NET? Я видел материал об объекте Response, но я очень нов в C #. Спасибо за тонну.

Ответы [ 5 ]

53 голосов
/ 14 марта 2009

Это должно работать:

 //this gets the ip address of the server pc

  public string GetIPAddress()
  {
     IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); // `Dns.Resolve()` method is deprecated.
     IPAddress ipAddress = ipHostInfo.AddressList[0];

     return ipAddress.ToString();
  }

http://wec -library.blogspot.com / 2008/03 / получает IP-адрес--оф-сервера рс-с использованием-c.html

ИЛИ

 //while this gets the ip address of the visitor making the call
  HttpContext.Current.Request.UserHostAddress;

http://www.geekpedia.com/KB32_How-do-I-get-the-visitors-IP-address.html

31 голосов
/ 18 июля 2012

Request.ServerVariables["LOCAL_ADDR"];

Это дает IP-адрес, на который поступил запрос для многосетевых серверов

13 голосов
/ 10 февраля 2010

Выше приведено медленно, так как требует DNS-вызова (и, очевидно, не будет работать, если он не доступен). Вы можете использовать код ниже, чтобы получить карту локальных адресов IPV4 текущего компьютера с соответствующей маской подсети:

public static Dictionary<IPAddress, IPAddress> GetAllNetworkInterfaceIpv4Addresses()
{
    var map = new Dictionary<IPAddress, IPAddress>();

    foreach (var ni in NetworkInterface.GetAllNetworkInterfaces())
    {
        foreach (var uipi in ni.GetIPProperties().UnicastAddresses)
        {
            if (uipi.Address.AddressFamily != AddressFamily.InterNetwork) continue;

            if (uipi.IPv4Mask == null) continue; //ignore 127.0.0.1
            map[uipi.Address] = uipi.IPv4Mask;
        }
    }
    return map;
}

предупреждение: это еще не реализовано в Mono

7 голосов
/ 04 апреля 2011
  //this gets the ip address of the server pc
  public string GetIPAddress()
  {
     string strHostName = System.Net.Dns.GetHostName();
     //IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); <-- Obsolete
     IPHostEntry ipHostInfo = Dns.GetHostEntry(strHostName);
     IPAddress ipAddress = ipHostInfo.AddressList[0];

     return ipAddress.ToString();
  }
3 голосов
/ 15 июня 2015

Это будет работать для IPv4:

public static string GetServerIP()
{            
    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());

    foreach (IPAddress address in ipHostInfo.AddressList)
    {
        if (address.AddressFamily == AddressFamily.InterNetwork)
            return address.ToString();
    }

    return string.Empty;
}
...