Ich verwende ASP.NET (.asmx) Webdienste mit Silverlight. Da es keine Möglichkeit gibt, die Client-IP-Adresse in Silverlight zu finden, musste ich dies auf der Service-Seite protokollieren. Dies sind einige Methoden, die ich versucht habe:Client-IP-Adresse in 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();
Alle oben genannten Methoden auf meinem lokalen System gut funktionieren, aber wenn ich meinen Dienst auf einem Produktionsserver zu veröffentlichen, beginnt es gibt Fehler,
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 Reference Ausnahme tritt auf, wenn ich versuche, Request.UserHostAddress oder HttpContext.Current.Request.ServerVariables [ "REMOTE_ADDR"] Ich kann nicht nur eine Möglichkeit herauszufinden, die Client-IP in meinem asmx Service zu erhalten. = ( –
@Zain: Wie ich schon sagte, überprüfe auf Null, bevor du irgendeinen dieser Werte verwendest. In der Tat solltest du 'HttpContext.Current' testen, um zu sehen, ob es null ist, bevor du' HttpContext.Current.Request' probierst. –