繁体   English   中英

IIS7 或 ASP.NET 返回一个奇怪的客户端 IP 地址

[英]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。 我建议关闭它:

  • 导航到“关于:配置”
  • 找到“network.dns.disableIPv6”条目
  • 设置为真

这也将加速本地开发和调试,因为启用 IPv6 时 FF 有时会无缘无故挂起。

我推荐的另一个选项是禁用 IPv6。 除非您运行的是端到端的 IPv6,否则它现在没有用处,而最终用户 ISP 没有。 只需打开连接上的连接属性并取消选中“Internet 协议版本 6 (TCP/IPv6)”框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM