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(); }
-
转到开始 – >单击控制面板 – >单击控制面板窗口中的
View network status and tasks
– >单击Network and Sharing Center
窗口中的change adapter settings
。 -
将出现“
Network Connections
窗口。 在此处右键单击要禁用IPv6的network adapter
(可以是无线适配器或有线以太网适配器),然后单击“Properties
。 -
在
network adapter properties
窗口中,取消选中Internet Protocol Version 6 (TCP/IPv6)
,然后单击“确定”。 -
在命令提示符下键入
regedit
以启动注册表编辑器,继续在注册表编辑器中找到以下注册表项。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
-
如果
DisabledComponents
项不可用,则必须按以下格式创建它:转到编辑 – >新建 – > DWORD(32位)值并将值设置为0xffffffff
(只需键入ffffffff
)。 这将禁用除IPv6环回接口之外的所有IPv6function,最后单击“OK
。 -
重启电脑。