一尘不染

如何在ASP.NET中获取用户的客户端IP地址?

c#

我们必须Request.UserHostAddress在ASP.NET中获取IP地址,但这通常是用户的ISP的IP地址,而不完全是例如单击链接的用户的计算机IP地址。如何获得真实的IP地址?

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

在某些Web系统中,出于某些目的需要进行IP地址检查。例如,使用某个IP地址,用户是否可以每24小时仅点击5次下载链接?此IP地址应该是唯一的,而不是对于拥有大量客户端或Internet用户的ISP。

我听得懂吗


阅读 301

收藏
2020-05-19

共1个答案

一尘不染

正如其他人所说,您不能做您要问的事情。如果您描述您要解决的问题,也许有人可以提供帮助?

例如

  • 您是否试图唯一标识您的用户?
  • 您能否使用Cookie或会话ID代替IP地址?

编辑
您在服务器上看到的地址不应是ISP的地址,因为您说的范围很大。宽带上的家庭用户的地址将是其路由器上的地址,因此房屋内的每个设备在外部都将显示为相同,但是路由器使用NAT来确保将流量正确路由到每个设备。对于从办公环境访问的用户,该地址对于所有用户而言可能都是相同的。使用IP地址作为ID的站点冒着将其弄错的风险-
您所举的例子很好,但常常失败。例如,我的办公室在英国,分支点(我“看起来”在互联网上的位置)在我们主要IT设施所在的另一个国家,因此从我的办公室,我的IP地址似乎不在英国。因此,我无法仅访问英国的网页内容,例如BBC
iPlayer)。在任何给定的时间,我公司中都会有数百甚至数千人似乎是从同一IP地址访问网络的。

在编写服务器代码时,您永远无法确定所看到的IP地址是指什么。一些用户喜欢这种方式。有些人故意使用代理或VPN进一步困扰您。

当您说您的计算机地址与StackOverflow上显示的IP地址不同时,如何找到您的计算机地址?如果您只是在本地使用ipconfig或类似的工具,由于上述原因,我希望它会有所不同。如果您想再次检查外界的想法,请访问whatismyipaddress.com/。

NAT上的Wikipedia链接将为您提供一些背景知识。

2020-05-19