Domanda

Nella sezione Proprietà della mia scheda di rete, su Windows Server 2008, ho IPV6 disabili, lasciando solo IPV4 abilitato.

Tuttavia in ASP.NET, Request.UserHostAddress ritorna ':: 1', un indirizzo IPv6.

Qualcuno ha qualche idea di come tornare a IPV4?

È stato utile?

Soluzione

Se ci si collega a localhost (:: 1 / 127.0.0.1), non si sta usando la scheda di rete che il server ha, ma piuttosto come una carta virtuale che Windows ha. Non penso che ci sia comunque di configurare la scheda di loopback e la rimozione di IPv6 da esso, non senza rimuovere il supporto da tutto il sistema, ma in Win2008 probabilmente non posso farlo più.

È possibile verificare che la scheda fisica non viene utilizzato eseguendo pacchetto di rete acquisizione utils. In Windows, non si può mai fiutare il traffico che cammina la scheda di loopback virtuale.

Detto questo, si dovrebbe accedere da un computer diverso (attraverso una connessione che passerà attraverso la vostra carta fisica), si dovrebbe vedere un indirizzo IPv4 viene restituito da Request.UserHostAddress

Altri suggerimenti

I 4 ragazzi dal sito Rolla ha una soluzione qui , che ho usato nella mia app .

Aggiornamento:

Nel caso in cui questo link si esaurisce, qui si codice basato su questo link:

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. Vai su Start -> cliccare su Pannello di controllo -> cliccare sul View network status and tasks nella finestra Pannello di controllo -.> Cliccare sul change adapter settings nella finestra Network and Sharing Center

  2. Verrà visualizzata la finestra Network Connections. Qui si fa clic destro sul network adapter (può essere adattatore wireless o un adattatore Ethernet cablata) che si desidera disattivare IPv6 e cliccare Properties.

  3. Nella finestra network adapter properties, Internet Protocol Version 6 (TCP/IPv6) deselezionare e fare clic su OK.

  4. Tipo regedit nel prompt dei comandi per avviare l'editor del Registro, passare per individuare voce seguente Registro di sistema in Editor del Registro di sistema.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
    
  5. Se l'articolo DisabledComponents non è disponibile, è necessario crearlo nel seguente formato andando in Modifica -> Nuovo -> DWORD (32-bit) e impostare il valore a 0xffffffff (basta digitare ffffffff). Questo disabiliterà tutte le funzionalità IPv6 tranne l'interfaccia di loopback IPv6, infine, fare clic OK.

  6. Riavviare il computer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top