Problème de Conversion de l'ipv6 pour ipv4

J'ai un peu de code dans un asp.net application qui needsto obtenir l'adresse ipv4 de l'ordinateur client (les utilisateurs sont tous sur notre propre réseau). Récemment, nous avons mis à niveau le serveur de l'application s'exécute sur windows 2008 server. Maintenant la Demande.UserHostAddress code renvoie ipv4 lorsque le client est sur un ancien OS et ipv6 quand ils sont sur un nouvel OS (Vista et supérieur). Donc la fonction qui relys sur ce qui fonctionne pour certains clients et pas les autres.

J'ai ajouté le code qui est censé pour convertir de l'ipv6 pour ipv4, pour essayer de résoudre ce problème. C'est à partir de ce tutoriel en ligne: http://www.4guysfromrolla.com/articles/071807-1.aspx .Je suis à l'utilisation de la dsn.GetHostAddress et puis en parcourant les IPs retournés à la recherche de celui qui est "Inter"

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 à partir d'ipv4 continuer à renvoyer la bonne ipv4 IP de l'ordinateur client, mais les clients se connectant à partir de Vista et Windows 7, il est de retour ipv4 IP de la SERVEUR machine pas l'ordinateur client.

J'ai vu cet exemple de code répétées sur de nombreux blogs. Je suis étonné de voir comme il est si mal.. partie 1, obtenez l'adresse IP du client. Si cela échoue, renvoyer l'adresse IP du serveur. wtf?!?
Yep, juste trouvé que même l'exemple ici: 4guysfromrolla.com/articles/071807-1.aspx. Si rien d'autre, à l'aide de ToString() pour vérifier enum l'égalité dirait qu'il a été écrit par un total .NET débutant.

OriginalL'auteur Eden | 2010-01-11