J'ai du code dans une application asp.net qui nécessite l'adresse ipv4 de l'ordinateur client (les utilisateurs sont tous sur notre propre réseau). Récemment, nous avons mis à jour le serveur sur lequel l'application fonctionne sur le serveur Windows 2008. Maintenant le code Request.UserHostAddress renvoie l'ipv4 quand le client est sur un OS plus ancien et ipv6 quand ils sont sur un OS plus récent (Vista et supérieur). Donc, la fonctionnalité qui repose sur cela fonctionne pour certains clients et pas d'autres.Problème Conversion d'ipv6 en ipv4
J'ai ajouté du code supposé convertir d'ipv6 en ipv4 pour essayer de résoudre ce problème. Il est de ce tutoriel en ligne: http://www.4guysfromrolla.com/articles/071807-1.aspx .I'm en utilisant dsn.GetHostAddress puis en boucle à travers les adresses IP à la recherche d'un ont retourné qui est « InterNetwork »
foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
if (IP4Address != String.Empty)
{
return IP4Address;
}
foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
return IP4Address;
Le problème est que cela ne fonctionne pas pour moi. Les clients se connectant depuis ipv4 continuent de renvoyer l'adresse IP ipv4 correcte de l'ordinateur client, mais les clients se connectant à partir de Vista et Windows 7 retournent l'IP ipv4 de la machine SERVER et non l'ordinateur client.
J'ai vu cet exemple de code répété sur de nombreux blogs. Je suis étonné car c'est tellement faux .. partie 1, obtenir l'adresse IP du client. Si cela échoue, renvoyez l'adresse IP du serveur. wtf?!? –
Oui, juste trouvé ce même exemple ici: http://www.4guysfromrolla.com/articles/071807-1.aspx. Si rien d'autre, en utilisant 'ToString()' pour vérifier l'égalité enum ressemble à ce qu'il a été écrit par un débutant .NET total. – Groo