web-dev-qa-db-fra.com

Obtenir l'adresse IP du serveur dans ASP.NET?

Comment obtenir l'adresse IP du serveur qui appelle ma page ASP.NET? J'ai vu des choses sur un objet Response, mais je suis très nouveau sur c #. Merci beaucoup.

35
jergason

Cela devrait fonctionner:

 //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/gets-ip-address-of-server-pc-using-c.html

OR

 //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

56
TStamper

Request.ServerVariables["LOCAL_ADDR"];

Cela donne l'IP sur laquelle la demande est arrivée pour les serveurs multi-hébergés

33
MrPurpleStreak

Ce qui précède est lent car il nécessite un appel DNS (et ne fonctionnera évidemment pas s'il n'y en a pas de disponible). Vous pouvez utiliser le code ci-dessous pour obtenir une carte des adresses IPV4 locales du PC actuel avec leur masque de sous-réseau correspondant:

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;
}

avertissement: ceci n'est pas encore implémenté en Mono

14
mythz
  //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();
  }
7
Alberto León

Cela fonctionnera pour 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;
}
5
André Voltolini

L'instantané ci-dessous est tiré de Mkyong pour afficher l'onglet réseaux dans la console des développeurs dans google chrome.Inside "Request Headers" tab vous pouvez voir une liste de toutes les variables de serveur comme indiqué ci-dessous:

enter image description here

Voici quelques lignes de code qui obtiennent l'adresse IP du client qui frappe votre application

//gets the ipaddress of the machine hitting your production server              
string ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

if (ipAddress == "" || ipAddress == null)  
{                                     
  //gets the ipaddress of your local server(localhost) during development phase                                                                         
  ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];              
}

//Output:                                                                           
For production server - 122.169.106.247 (random)
For localhost         - ::1
0
Tahir77667