Dav*_*vid 35
来自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();
}
Run Code Online (Sandbox Code Playgroud)
Mig*_*ura 23
如果您要连接到localhost(:: 1/127.0.0.1),则不是使用服务器所具有的网卡,而是使用Windows所具有的虚拟卡.我不认为有任何方法可以配置环回卡并从中删除IPv6,而不是从整个系统中删除支持,但在Win2008中你可能不能再这样做了.
您可以通过运行网络数据包捕获工具来验证您的物理卡未被使用.在Windows中,您永远无法嗅出走过虚拟环回卡的流量.
也就是说,如果您从其他计算机访问(通过将通过您的物理卡的连接),您应该看到返回的IPv4地址 Request.UserHostAddress
| 归档时间: |
|
| 查看次数: |
32893 次 |
| 最近记录: |