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.
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
Request.ServerVariables["LOCAL_ADDR"];
Cela donne l'IP sur laquelle la demande est arrivée pour les serveurs multi-hébergés
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
//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();
}
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;
}
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:
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