Tôi đang sử dụng dịch vụ web ASP.NET (.asmx) với Silverlight. Vì không có cách nào để tìm địa chỉ IP của máy khách trong Silverlight, tôi phải đăng nhập vào cuối dịch vụ. Đây là một số phương pháp tôi đã cố gắng:Địa chỉ IP của khách hàng trong 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();
Tất cả các phương pháp trên hoạt động tốt trên hệ thống địa phương của tôi, nhưng khi tôi xuất bản dịch vụ của tôi trên máy chủ sản xuất, nó bắt đầu đưa ra các lỗi,
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 ngoại lệ xảy ra khi tôi cố gắng Request.UserHostAddress hoặc HttpContext.Current.Request.ServerVariables [ "REMOTE_ADDR"] Tôi chỉ không thể tìm ra cách nào để có được những khách hàng IP phục vụ asmx tôi. = ( –
@Zain: Giống như tôi đã nói, hãy kiểm tra null trước khi bạn sử dụng bất kỳ giá trị nào trong số này. Trên thực tế, hãy chắc chắn kiểm tra 'HttpContext.Current' để xem nếu nó là null trước khi bạn thử' HttpContext.Current.Request'. –