2011-04-26 20 views
15

Estoy ejecutando una aplicación de mvc ASp.Net en el servidor localhost - dev proporcionado con Visual Studio. Quiero obtener la dirección IP. Probé¿Por qué recibo :: 1 como dirección IP en ASP.Net .. y cómo obtener la dirección IP correcta?

Request.UserHostAddress

y

Request.ServerVariables("REMOTE_ADDR")

En ambos casos, estoy consiguiendo :: 1 como el resultado. ¿Qué es? ¿Por qué lo estoy obteniendo? ¿Cómo puedo obtener 127.0.0.1 o 192.168.1.xxx?

+0

Tome un vistazo a http://stackoverflow.com/questions/960019/page-request-userhostaddress-is-in-an-invalid-format – Mark

Respuesta

15

Lo que está viendo al llamar a 'localhost' es válido. :: 1 es la dirección de bucle de IPv6. Equivalente a 127.0.0.1 para IPv4.

en lugar de llamar:

 http://localhost/...

Llamar:

 http://{machinename}/...
 -or- 
 http://127.0.0.1/...
 -or- 
 http://192.168.1.XXX/...

[Reemplazar {mac hinename} con el nombre de la computadora de su máquina. Reemplace XXX con la dirección IP de su computadora.]

Cualquier persona que entre en su máquina a la aplicación MVC tendrá allí una dirección IP válida como resultado. Si el cliente es un host IPv6 guardará su dirección IP IPv6. Si el cliente es un host IPv4 guardará su dirección IP IPv4.

Si siempre quiere guardar una dirección IPv4 eche un vistazo a este artículo sobre cómo lo lograron con una clase simple http://www.4guysfromrolla.com/articles/071807-1.aspx. Debería poder tomar ejemplo y construir un método de ayuda rápida para lograr esto.

+0

Bueno .. Reemplacé localhost con 127.0.0.1 y lo demostré. Por nombre de la máquina no funcionó. Obtengo el error "No se puede conectar". –

+0

También trato de esto, pero la solución es la misma e obtengo :: 1 –

1
Request.Params["REMOTE_ADDR"] 

en lugar de Request.ServerVariables("REMOTE_ADDR")

+0

Intenté request.params ... todavía obtengo :: 1 :( –

+0

Sí. Investigué esto. Básicamente lo que está sucediendo es que su computadora está usando el nuevo sistema IP. Localhost en IPv6 es :: 1 - http://social.msdn.microsoft.com/forums/en-US/wcf/thread/36f57ccf-7a76-4843 -84bd-7bb945aad23f /. Si accede desde un cliente Ipv4, obtendrá la dirección IPv4 en su lugar. – slandau

21

que está recibiendo una dirección IP válida. ::1 es local_host en IPv6. (guión bajo usado en local_host para evitar que SO sea un tipo de texto incorrecto)

+0

Por lo que sé, esta es la respuesta a la pregunta real. – Guidhouse

+1

@Guidehouse ... ok ahora ... :) –

+1

Bien, bien ... entonces, ¿cómo puedo obtener la IP de IPv4? –

1

Si desea que localhost regrese 127.0.0.1, tal vez necesite cambiar su archivo "hosts". Lo puede encontrar en "% unidad del sistema% \ Windows \ System32 \ drivers \ etc"

Funciona para mí, ahora obtengo 127.0.0.1 con "Request.ServerVariables [" REMOTE_ADDR "]". Descomentamiento 127.0.0.1 (eliminar #). presentar

Aquí puede encontrar anfitriones defecto http://support.microsoft.com/kb/972034

Mi archivo

resolución de nombres # localhost se maneja dentro de DNS en sí.

127.0.0.1  localhost 

# :: 1 localhost

+0

, pero quiero una dirección IP adecuada como :: 1? Por favor, que alguien me ayude –