una servidor saber rastrear persona obtener nombre net equipo direccion como cliente asp c# asp.net web-services

servidor - obtener la ip del equipo c#



¿Cómo obtengo la dirección IP de la persona que llama en un WebMethod? (6)

¿Cómo obtengo la dirección IP de la persona que llama en un WebMethod?

[WebMethod] public void Foo() { // HttpRequest... ? - Not giving me any options through intellisense... }

usando C # y ASP.NET


El HttpContext está realmente disponible dentro de la clase base de WebService , así que simplemente use Context.Request (o HttpContext.Current que también apunta al contexto actual) para obtener acceso a los miembros proporcionados por HttpRequest .


Hice la siguiente función:

static public string sGetIP() { try { string functionReturnValue = null; String oRequestHttp = WebOperationContext.Current.IncomingRequest.Headers["User-Host-Address"]; if (string.IsNullOrEmpty(oRequestHttp)) { OperationContext context = OperationContext.Current; MessageProperties prop = context.IncomingMessageProperties; RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; oRequestHttp = endpoint.Address; } return functionReturnValue; } catch (Exception ex) { return "unknown IP"; } }

Esto funciona solo en Intranet, si tiene algún Proxy o natting, debería estudiar si la IP original se mueve a otra parte en el paquete http.


Prueba esto:

string ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

No lo he probado en un webMethod, pero lo uso en HttpRequests estándar


Solo una advertencia. Las direcciones IP no se pueden usar para identificar de manera exclusiva a los clientes. Los cortafuegos NAT y los proxies corporativos están en todas partes, y ocultan a muchos usuarios detrás de una sola IP.


Tratar:

Context.Request.UserHostAddress