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

问题描述:

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

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

所以,我想我必须使用像JavaScript这样的客户端代码。

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

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

string ip = Request.UserHostAddress; 
string hostname = Request.UserHostName; 
+0

这可能是最好的选择,但我知道我的浏览器从未发送这些报头。也许这些是IE功能。 – Pointy

+2

@Pointy,用户的IP地址不作为任何头发送。它由底层套接字确定,因此使用哪个浏览器发送HTTP请求并不重要。事实上,您可以使用WebClient编写.NET程序来发送来自某台计算机的HTTP请求,并且客户端的IP地址仍将被提取。就用户主机名而言,ASP.NET试图使用DNS来解决它。 –

+1

啊,我明白你的意思 - 这是服务器端基础设施的功能。谢谢! – Pointy