IIS Request.UserHostAddress返回IPV6(:: 1),即使禁用IPV6也是如此

在我的网卡的属性部分,在Windows Server 2008上,我禁用了IPV6,只启用了IPV4。

但是在ASP.NET中,Request.UserHostAddress返回’:: 1’,即IPV6地址。

有谁知道如何恢复到IPV4?

如果您要连接到localhost(:: 1 / 127.0.0.1),则不是使用服务器所具有的网卡,而是使用Windows所具有的虚拟卡。 我不认为有任何方法可以配置环回卡并从中删除IPv6,而不是从整个系统中删除支持,但在Win2008中你可能不能再这样做了。

您可以通过运行网络数据包捕获工具来validation您的物理卡未被使用。 在Windows中,您永远无法嗅出走过虚拟环回卡的流量。

也就是说,如果您从其他计算机访问(通过将通过您的物理卡的连接),您应该看到Request.UserHostAddress返回的IPv4地址

来自Rolla网站的4个人在这里有一个解决方案,我在我的应用程序中使用过。

更新:

为了防止此链接失效,以下是基于此链接的代码:

 public string GetIpAddress() { string ipAddressString = HttpContext.Current.Request.UserHostAddress; if (ipAddressString == null) return null; IPAddress ipAddress; IPAddress.TryParse(ipAddressString, out ipAddress); // If we got an IPV6 address, then we need to ask the network for the IPV4 address // This usually only happens when the browser is on the same machine as the server. if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) { ipAddress = System.Net.Dns.GetHostEntry(ipAddress).AddressList .First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork); } return ipAddress.ToString(); } 
  1. 转到开始 – >单击控制面板 – >单击控制面板窗口中的View network status and tasks – >单击Network and Sharing Center窗口中的change adapter settings

  2. 将出现“ Network Connections窗口。 在此处右键单击要禁用IPv6的network adapter (可以是无线适配器或有线以太网适配器),然后单击“ Properties

  3. network adapter properties窗口中,取消选中Internet Protocol Version 6 (TCP/IPv6) ,然后单击“确定”。

  4. 在命令提示符下键入regedit以启动注册表编辑器,继续在注册表编辑器中找到以下注册表项。

     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents 
  5. 如果DisabledComponents项不可用,则必须按以下格式创建它:转到编辑 – >新建 – > DWORD(32位)值并将值设置为0xffffffff (只需键入ffffffff )。 这将禁用除IPv6环回接口之外的所有IPv6function,最后单击“ OK

  6. 重启电脑。