2011-09-07 21 views
5

Duplicar posible:
Client IP using C#Cómo obtener la dirección IP del visitante (también si detrás de un proxy)

utilizo ASP.net y C# y me gustaría saber cómo obtener la dirección IP de un visitante en una página.

Me gustaría ver un ejemplo de código que recupere la dirección IP y también podrá mostrar si una IP estaba detrás de un proxy.

Gracias por su tiempo.

+0

por qué los chicos un voto para esta pregunta? La pregunta apuntada por Mat no trata con Proxy. Un comentario sería apreciado. – GibboK

+0

lea las respuestas a esa pregunta. Algunos se ocupan de proxies. (En cuanto a la votación negativa, no sé. Probablemente por "investigación insuficiente"). – Mat

+0

Gracias por su comentario. – GibboK

Respuesta

9

usted podría utilizar la propiedad UserHostName en la solicitud objeto:

string ip = Request.UserHostName; 

En lo que se refiere a su segunda pregunta sobre el proxy, no hay ninguna forma fiable de conseguir esto. Puede usar la heurística para buscar algunos encabezados de solicitud HTTP que pueden ser enviados por el servidor proxy, como Via o X-Forwarded-For.

string header = Request.Headers["Via"] ?? Request.Headers["X-Forwarded-For"]; 
if (!string.IsNullOrEmpty(header)) 
{ 
    // probably the request was forwarded from a proxy server 
    // but you cannot be 100% sure as HTTP request headers can be faked 
} 
+0

Gracias Darin por su visión. – GibboK

+0

para hacer el trabajo 'request', necesitas agregar la referencia' System.Web.dll', mira cómo hacerlo [aquí] (http://www.codeproject.com/Questions/422895/The-name-HttpContext-does -no-existir-en-la-corriente), la esperanza ayuda a alguien. – stom

+0

"Via" puede contener el nombre del proxy pero "X-Forwarded-For" para la dirección IP real. Solo asegúrate de elegir el correcto. – SeriousM

-1

tio tan simple,

string IP = Request.ServerVariables["REMOTE_HOST"].ToString(); 
+0

Su pregunta es acerca de hacer eso detrás de un proxy. Su solución siempre dará la ip del servidor proxy en sí. –

Cuestiones relacionadas