我们有请求。UserHostAddress在ASP. ASP. ASP中获取IP地址。NET,但这通常是用户的ISP的IP地址,而不是用户点击链接的机器IP地址。如何获取真实IP地址?

例如,在Stack Overflow用户配置文件中,它是:“上次帐户活动:4小时前从86.123.127.8开始”,但我的机器IP地址有点不同。Stack Overflow如何获得这个地址?

在一些web系统中,出于某些目的有一个IP地址检查。例如,对于某个IP地址,每24小时用户只能点击5次下载链接吗?这个IP地址应该是唯一的,而不是针对一个拥有大量客户端或互联网用户的ISP。

我听懂了吗?


当前回答

IP地址是“七层堆栈”中的网络层的一部分。网络层可以对IP地址做任何它想做的事情。这就是代理服务器、NAT、中继或其他设备所发生的情况。

应用层不应该以任何方式依赖于IP地址。特别是,IP地址不意味着是网络连接一端的标识符以外的任何标识符。一旦连接被关闭,(同一用户的)IP地址就会发生变化。

其他回答

string IP = HttpContext.Current.Request.Params["HTTP_CLIENT_IP"] ?? HttpContext.Current.Request.UserHostAddress;

您还认为用户IP地址是什么?如果你想要网络适配器的IP地址,恐怕在Web应用程序中没有办法做到这一点。如果你的用户在NAT或其他东西后面,你也无法获得IP。

更新:虽然有些网站使用IP来限制用户(如rapidshare),但它们在NAT环境中不能正常工作。

简单的

var ip =  Request.UserHostAddress;

这就是……

它的简单。试一试:

var remoteIpAddress = Request.HttpContext.Connection.RemoteIpAddress;

就这样吧!)

你能做的是存储你的用户的路由器IP和转发的IP,并尝试使用IP[外部公共和内部私有]使其可靠。但几天后,客户端可能会从路由器分配新的内部IP,但它会更可靠。