System.Web.HttpContext.Current.Request.UserHostAddress;

我使用以下代码来获取用户IP地址,但发生了一些奇怪的事情。 我是,每次都收到相同的IP地址,无论我是在桌面上还是在我的iPhone上。 当我从桌面上点击页面时,我在我们的网络中,网络服务器就在那里,但在我的iPhone上,我甚至不在建筑物中。 我以前没遇到过这个问题,我要回的IP地址是分配给Web服务器的内部地址。

string ip = System.Web.HttpContext.Current.Request.UserHostAddress; Response.Write(ip); 

在我的网络之外我仍然得到相同的IP地址172.16.0.22这是一个路由器地址,而不是我们的外部IP。 有没有办法获取外部IP地址。

请参阅此链接http://thepcspy.com/read/getting_the_real_ip_of_your_users/

  // Look for a proxy address first _ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; // If there is no proxy, get the standard remote address if (_ip == null || _ip.ToLower() == "unknown") _ip = Request.ServerVariables["REMOTE_ADDR"]; 

我希望这次能够得到解决,我遇到了同样的问题。 和我们一样,我知道IP地址是网络上的服务器之一(Load Balancer)。

如果您的解决方案是负载均衡的Web服务器,那么您的负载均衡器很可能正在更新请求标头信息,通过某些软件负载均衡器重新路由。

如果是本地测试,请更新路由器配置以传递请求详细信息。 阅读一些路由器配置手册,应该有一些将具有此设置。 🙂

提供您的路由器信息,有人将拥有路由器/硬件知识。

我不是硬件专家,但要求您的网络管理员按原样传递标头信息,或者至少更新“X-Forwarded-For”信息。 因此,您可以构建代码以一致地读取此信息。

在此处查找有关行业和问题中使用的流量路由技术的更多信息。

桑杰

试试这个;

 if (!String.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"])) ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"]; else ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 

Request.UserHostAddress返回IIS运行的服务器IP。