IIS Request.UserHostAddress regresar IPV6 (:: 1), incluso cuando IPV6 discapacitados
Pregunta
En la sección de propiedades de mi tarjeta de red, el servidor de Windows 2008, tengo IPV6 discapacitados, dejando sólo permitió IPV4.
Sin embargo, en ASP.NET, Request.UserHostAddress vuelve ':: 1', una dirección IPv6.
¿alguien tiene alguna idea de cómo volver a IPV4?
Solución
Si se conecta al servidor local (:: 1 / 127.0.0.1), no se está usando la tarjeta de red que su servidor tiene, sino más bien como una tarjeta virtual que tiene ventanas. Creo que no hay de todos modos para configurar la tarjeta de bucle de retorno y la eliminación de IPv6 de ella, no sin retirar el apoyo de todo el sistema, pero en Win2008 es probable que no puedo hacerlo más.
Puede verificar que la tarjeta física no está siendo utilizado mediante la ejecución de paquetes de red captura de utilidades. En las ventanas, nunca se puede olfatear el tráfico que se acerca la tarjeta de bucle virtual.
Dicho esto, en caso de que el acceso desde una máquina diferente (a través de una conexión que se pasa a través de su tarjeta física), debería ver una dirección IPv4 ser devuelto por Request.UserHostAddress
Otros consejos
Los 4 chicos de la página web Rolla tiene una solución aquí , que he utilizado en mi aplicación .
Actualización:
Sólo en caso de este enlace se agota, aquí está el código basado en este enlace:
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();
}
-
Ir a Inicio -> haga clic en Panel de control -> haga clic en
View network status and tasks
en la ventana Panel de control -.> Haga clic enchange adapter settings
en la ventanaNetwork and Sharing Center
-
aparecerá la ventana
Network Connections
. Aquí hace clic derecho en elnetwork adapter
(puede ser adaptador inalámbrico o un adaptador Ethernet cableada) que desea desactivar IPv6 y haga clic enProperties
. -
En la ventana
network adapter properties
,Internet Protocol Version 6 (TCP/IPv6)
untick y haga clic en OK. -
Tipo
regedit
en línea de comandos para iniciar el Editor del Registro, proceda a localizar siguiente elemento de registro en el editor del registro.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
-
Si el artículo
DisabledComponents
no está disponible, se debe crear en formato siguiente yendo a Editar -> Nuevo -> Valor de DWORD (32 bits) y establecer el valor de0xffffffff
(sólo escribaffffffff
). Esto desactivará todas las características de IPv6, excepto la interfaz de bucle invertido de IPv6, finalmente, haga clicOK
. -
Reiniciar el equipo.