在我的ASP.NET应用程序中,我说这样的东西来获取客户端IP地址:
string ipAddress = HttpContext.Current.Request.UserHostAddress;
这是我一直使用的正常,直接的方式,而且似乎总是有效.大家都知道上面的语句只是REMOTE_ADDR服务器变量的包装器.
很简单吧?好吧,在过去的几天里,我一直注意到在我的本地开发机器上,它返回的值为:
"fe80::dde4:def3:7f1b:a582%10"
我没有世俗的想法.我正在运行Vista x64并使用IIS7运行我的应用程序.我确实启用了IPv4和IPv6,但通常会返回以下内容:
"1::"
我不知道为什么会这样.重启不会解决任何问题.
编辑:
发生这种情况时,我正在使用Chrome.
看起来它正在返回IPv6.
::1
是IPv6的环回地址,它只是反向的字节顺序1::
.
我还应该注意fe80::/10
IPv6中的地址是自动配置IP地址(在IPv4中,这些是169.254.0.0/16
).例如,如果您在专用LAN上并且无法访问DHCP服务器,则Windows将自动为您的以太网适配器分配自动配置IP地址.
仅供参考,您通常应该为无法访问DHCP服务器的适配器分配专用IP地址.