尝试获取外部客户端IP地址时的响应不同

时间:2015-10-31 14:39:55

标签: asp.net dns

我想知道为什么在使用以下代码时:

HttpContext.Current.Request.UserHostAddress

它返回服务器的本地网关地址。例如,(192.168.1.1)。

但使用时:

System.Net.Dns.GetHostAddresses(HttpContext.Current.Request.Url.Host)(0).ToString()

它成功解析了本地客户端的外部IP地址。

我最近升级了网络服务器网络上的网关/防火墙,无法弄清楚为什么新网关会以这种方式改变标题。

1 个答案:

答案 0 :(得分:0)

这两者非常不同。

HttpContext.Current.Request.UserHostAddress为您提供向您的网站发出请求的远程客户端AKA用户的IP地址。访问此属性是即时的,即不涉及查询和解析。这是获取用户IP地址的正确方法。

System.Net.Dns.GetHostAddresses(HttpContext.Current.Request.Url.Host)(0).ToString()通过查询系统配置的DNS服务器,为您提供网站主机本身的IP地址。 永远不会为您提供用户的IP地址。

如果您从192.168.1.1获得HttpContext.Current.Request.UserHostAddress所有请求,则可能是路由器/转发配置错误。

相关问题