IIS Request.UserHostAddress retour IPV6 (:: 1), même lorsque IPV6 personnes handicapées

StackOverflow https://stackoverflow.com/questions/1932843

  •  20-09-2019
  •  | 
  •  

Question

J'ai IPV6 désactivé, ne laissant que IPV4 activée dans la section de ma carte réseau propriétés, sur Windows Server 2008,.

Cependant, dans ASP.NET retourne, Request.UserHostAddress ':: 1', une adresse IPV6.

Quelqu'un at-il une idée de revenir à IPV4?

Était-ce utile?

La solution

Si vous vous connectez à localhost (1 :: / 127.0.0.1), vous n'êtes pas en utilisant la carte réseau que votre serveur a, mais plutôt comme une carte virtuelle que Windows a. Je ne pense pas qu'il y ait de toute façon de configurer la carte et la suppression réalimentation IPv6, non sans enlever le soutien de l'ensemble du système, mais Win2008 vous pouvez probablement pas faire plus.

Vous pouvez vérifier que votre carte physique n'est pas utilisé en exécutant la capture de paquets réseau utils. Dans Windows, vous ne pouvez jamais renifler le trafic qui marche la carte virtuelle réalimentation.

Cela dit, si vous accéder à partir d'une autre machine (via une connexion qui transite par votre carte physique), vous devriez voir une adresse IPv4 étant renvoyée par Request.UserHostAddress

Autres conseils

Les 4 gars de site Rolla a une solution , que je l'ai utilisé dans mon application .

Mise à jour:

Juste au cas où ce lien va mort, ici est le code basé sur ce lien:

public string GetIpAddress()
{
    string ipAddressString = HttpContext.Current.Request.UserHostAddress;

    if (ipAddressString == null)
        return null;

    IPAddress ipAddress;
    IPAddress.TryParse(ipAddressString, out ipAddress);

    // If we got an IPV6 address, then we need to ask the network for the IPV4 address 
    // This usually only happens when the browser is on the same machine as the server.
    if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
    {
        ipAddress = System.Net.Dns.GetHostEntry(ipAddress).AddressList
            .First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
    }

    return ipAddress.ToString();
}
  1. Allez dans Démarrer -> cliquez sur Panneau de configuration -> cliquez sur View network status and tasks dans la fenêtre Panneau de configuration -.> Cliquez sur change adapter settings dans la fenêtre Network and Sharing Center

  2. fenêtre Network Connections apparaîtra. Vous faites un clic droit sur le network adapter (peut être adaptateur sans fil ou adaptateur Ethernet filaire) que vous souhaitez désactiver IPv6 et cliquez sur Properties.

  3. Dans la fenêtre network adapter properties, décocher Internet Protocol Version 6 (TCP/IPv6), puis cliquez sur OK.

  4. Type regedit dans l'invite de commande pour lancer l'éditeur de registre, passez à localiser suivante élément de registre dans l'éditeur du Registre.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
    
  5. Si l'élément de DisabledComponents est indisponible, vous devez créer au format suivant en allant Edition -> Nouveau -> DWORD (32 bits) et définissez la valeur à 0xffffffff (il suffit de taper ffffffff). Cela désactive toutes les fonctions IPv6, à l'exception de l'interface IPv6 loopback, enfin cliquez sur OK.

  6. Redémarrez l'ordinateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top