Używam serwisów ASP.NET (.asmx) z Silverlight. Ponieważ nie ma sposobu na znalezienie adresu IP klienta w Silverlight, musiałem zalogować to na końcu usługi. Są pewne sposoby próbowałem:Adres IP klienta w 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();
Wszystkie powyższe metody działają dobrze na moim komputerze lokalnym, ale kiedy opublikować moją usługę na serwerze produkcyjnym, zaczyna błędy podając,
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 odniesienia występuje wtedy, gdy próbuję Request.UserHostAddress lub HttpContext.Current.Request.ServerVariables [ „REMOTE_ADDR”] ja po prostu nie mogę znaleźć się w dowolny sposób na zdobycie klienta IP w moim usługa ASMX. = ( –
@Zain: Tak jak powiedziałem, sprawdź null, zanim użyjesz żadnej z tych wartości .Prawdziwie, przetestuj 'HttpContext.Current', aby sprawdzić, czy jest on pusty, zanim spróbujesz' HttpContext.Current.Request'. –