Sto utilizzando i servizi Web ASP.NET (.asmx) con Silverlight. Poiché non è possibile trovare l'indirizzo IP del client in Silverlight, è stato necessario registrarlo sul servizio. Questi sono alcuni metodi che ho provato:Indirizzo IP del client nei servizi Web ASP.NET (.asmx)
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();
Tutti i metodi di cui sopra funzionano bene sul mio sistema locale, ma quando pubblico il mio servizio su un server di produzione, inizia a dare errori,
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 Riferimento eccezione si verifica quando provo Request.UserHostAddress o HttpContext.Current.Request.ServerVariables [ "REMOTE_ADDR"] ho appena cant scoprire un modo per ottenere il client IP nel mio servizio ASMX. = ( –
@Zain: come ho detto, controlla null prima di utilizzare uno di questi valori, accertati di testare 'HttpContext.Current' per vedere se è null prima di provare' HttpContext.Current.Request'. –