我想尝试使用ServerVariables ["REMOTE_ADDR"]检查IP但它保持返回127.0.0.1

Sar*_*nyu 0 c# asp.net ip-address

我想尝试测试当前的IP地址以查找当前的国家/地区

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

但总是返回127.0.0.1'

有没有其他代码,我可以在互联网上获得我的IP地址,如61.90.25.10而不是本地的.

Gab*_*iel 5

HttpContext.Current.Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud)

要么

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
Run Code Online (Sandbox Code Playgroud)

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

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Run Code Online (Sandbox Code Playgroud)

但是当您离线使用此应用程序时,您将始终收到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"]);
Run Code Online (Sandbox Code Playgroud)

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