获取客户端的IP地址和计算机名称?

SaB*_*BeR 3 javascript c# asp.net

我有一个ASP.Net 4.0应用程序,发布在IIS 7.0服务器上的公司Intranet网络上,我想在我的数据库中保存客户端的IP地址.所以我想得到客户的IP地址和计算机名称.

我尝试了从互联网搜索的方法,但我得到"服务器IP"一个"服务器名称".我认为这是合乎逻辑的,因为我尝试的所有方法都是服务器端的C#代码.

所以,我认为我必须使用像JavaScript这样的客户端代码.

有没有人有正确的方法来做到这一点?

Dar*_*rov 12

您可以在对象上使用UserHostAddressUserHostName属性Request:

string ip = Request.UserHostAddress;
string hostname = Request.UserHostName;
Run Code Online (Sandbox Code Playgroud)

  • @Pointy,用户IP地址不作为任何标头发送.它是从底层套接字确定的,因此使用哪个浏览器发送HTTP请求并不重要.事实上,您可以使用WebClient编写.NET程序,从某台机器发送HTTP请求,仍然会获取客户端的IP地址.就用户主机名而言,ASP.NET尝试使用DNS来解析它. (2认同)
  • 您应该注意,如果混合中包含代理或负载平衡器,这将崩溃。ASP.NET将获得代理服务器或负载平衡器的IP地址,而不是客户端IP地址,存在一个标准,即如果由中间设备实施可以提供帮助,则它们将添加X-Forwarded-For标头。 (2认同)