0

我想尝试测试当前的 IP 地址以找到当前的国家

所以我试试这段代码...... HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

但它总是返回 127.0.0.1'

是否有任何其他代码可以让我在互联网上获取我的 ip 地址,例如 61.90.25.10 而不是本地的。

4

1 回答 1

5
HttpContext.Current.Request.UserHostAddress;

或者

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

要获取机器的 IP 地址而不是代理,请使用以下代码

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

但是,当您离线使用此应用程序时,您将始终收到 PC 的 IP 地址,因为这是服务器将看到的 IP,换句话说,您不会离开路由器并重新连接到服务器上,因此不会使用您的外部 IP:

如果您在在线运行的服务器上测试您的应用程序并尝试打印:

Response.Write("IP Address:");
Response.Write("IP: " + HttpContext.Current.Request.UserHostAddress);
Response.Write("IP1: " + HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
Response.Write("IP2: " + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);

您将看到您拥有的公共 ip,如果您在到达您的 PC(如 cloudflare)之前使用反向代理,请注意确保使用,HTTP_X_FORWARDED_FOR否则您可以使用 remote_addr 或 userhostaddress。

于 2012-05-02T12:08:53.570 回答