IIS Request.UserHostAddress ritorno IPV6 (:: 1), anche quando IPV6 disattivato
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?
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();
}
-
Vai su Start -> cliccare su Pannello di controllo -> cliccare sul
View network status and tasks
nella finestra Pannello di controllo -.> Cliccare sulchange adapter settings
nella finestraNetwork and Sharing Center
-
Verrà visualizzata la finestra
Network Connections
. Qui si fa clic destro sulnetwork adapter
(può essere adattatore wireless o un adattatore Ethernet cablata) che si desidera disattivare IPv6 e cliccareProperties
. -
Nella finestra
network adapter properties
,Internet Protocol Version 6 (TCP/IPv6)
deselezionare e fare clic su OK. -
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
-
Se l'articolo
DisabledComponents
non è disponibile, è necessario crearlo nel seguente formato andando in Modifica -> Nuovo -> DWORD (32-bit) e impostare il valore a0xffffffff
(basta digitareffffffff
). Questo disabiliterà tutte le funzionalità IPv6 tranne l'interfaccia di loopback IPv6, infine, fare clicOK
. -
Riavviare il computer.