Estoy usando servicios web ASP.NET (.asmx) con Silverlight. Como no hay forma de encontrar la dirección IP del cliente en Silverlight, tuve que registrar esto al final del servicio. Estos son algunos de los métodos que he intentado:Dirección IP del cliente en ASP.NET (.asmx) webservices
Request.ServerVariables("REMOTE_HOST")
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Request.UserHostAddress()
Request.UserHostName()
string strHostName = Dns.GetHostName();
string clientIPAddress = Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
Todos los métodos anteriores funcionan bien en mi sistema local, pero cuando publico mi servicio en un servidor de producción, se inicia error que dio,
Error: Object reference not set to an instance of an object. StackTrace:
at System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar(Int32 index)
at System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name)
at System.Web.Hosting.ISAPIWorkerRequest.GetRemoteAddress()
at System.Web.HttpRequest.get_UserHostAddress()
NULL referencia se produce cuando intento Request.UserHostAddress o HttpContext.Current.Request.ServerVariables [ "REMOTE_ADDR"] simplemente no puedo encontrar cualquier manera de conseguir que el cliente IP en mi servicio asmx. = ( –
@Zain: como dije, busca null antes de usar cualquiera de estos valores. De hecho, asegúrate de probar 'HttpContext.Current' para ver si es nulo antes de probar' HttpContext.Current.Request'. –