Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Web.HttpContext.Current.Request.UserHostAddress;_C#_Asp.net_Ip Address - Fatal编程技术网

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

C# System.Web.HttpContext.Current.Request.UserHostAddress;,c#,asp.net,ip-address,C#,Asp.net,Ip Address,我正在使用以下代码获取用户的IP地址,但发生了一些奇怪的事情。我是,每次都收到相同的ip地址,无论我是在桌面上还是在iPhone上。我在我们的网络上,当我从桌面点击网页时,网络服务器就在那里,但在我的iPhone上,我甚至不在大楼里。我以前没有遇到过这个问题,我得到的ip地址是分配给web服务器的内部地址 string ip = System.Web.HttpContext.Current.Request.UserHostAddress; Response.Write(ip); 在我的网络之外

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

string ip = System.Web.HttpContext.Current.Request.UserHostAddress;
Response.Write(ip);
在我的网络之外,我仍然得到相同的ip地址172.16.0.22,这是一个路由器地址,而不是我们的外部ip。是否有获取外部ip地址的方法。

请参阅此链接

试试这个

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。

我希望这一问题能在此时得到解决,我遇到了同样的问题。和你一样,我知道IP地址是网络上的一个服务器(负载平衡器)

如果您的解决方案是负载平衡的web服务器,那么负载平衡器很可能正在更新请求头信息、通过某些软件负载平衡器或其他方式重新路由

在本地测试的情况下,更新路由器配置以传递请求详细信息。阅读一些路由器配置手册,应该会有这样的设置:

提供您的路由器信息,有人将对此具有路由器/硬件知识

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

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


Sanjay

我看到了这个链接,我尝试了所有方法,仍然得到了相同的ip。它必须是路由器在此处的配置方式或类似的方式。注意:有时,如果您访问代理后面的站点,则从
HTTP\u X\u FORWARDED\u返回的IP为私有IP,有时不是所需的IP。如果您使用Nginx或Apache,您可以从
REMOTE\u ADDR
接收IP'127.0.0.1',这并不总是理想的IP。如果您返回,请附带注意:::1“,这只是127.0.0.1(home)的IPv6地址。
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"];