![](/img/trans.png)
[英]How to get the client IP address in asp.net when user runs hosted IIS link
[英]IIS7 or ASP.NET is returning an odd client IP Address
在我的 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::
的反转字节顺序。
我还应该注意,IPv6 中的fe80::/10
地址是自动配置 IP 地址(在 IPv4 中,这些地址是169.254.0.0/16
)。 例如,如果您在专用 LAN 上并且无法访问 DHCP 服务器,Windows 将自动为您的以太网适配器分配一个自动配置 IP 地址。
仅供参考,您通常应该将私有 IP 地址分配给无法访问 DHCP 服务器的适配器。
当您看到此问题时,您使用的是 FireFox 吗? 默认情况下,如果可用,它将使用 IPv6。 我建议关闭它:
这也将加速本地开发和调试,因为启用 IPv6 时 FF 有时会无缘无故挂起。
我推荐的另一个选项是禁用 IPv6。 除非您运行的是端到端的 IPv6,否则它现在没有用处,而最终用户 ISP 没有。 只需打开连接上的连接属性并取消选中“Internet 协议版本 6 (TCP/IPv6)”框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.