获取客户端的IP地址和计算机名称?
问题描述:
我有一个ASP.Net 4.0应用程序,发布在IIS 7.0服务器上的公司Intranet网络上,我想将客户端的IP地址保存在我的数据库中。所以我想获取客户端的IP地址和计算机名称。获取客户端的IP地址和计算机名称?
我试过从互联网搜索的方法,但我得到“服务器IP”“服务器名称”。我认为这是合乎逻辑的,因为我尝试的所有方法都是服务器端的C#代码。
所以,我想我必须使用像JavaScript这样的客户端代码。
有没有人有正确的方法来做到这一点?
答
您可以在Request
对象上使用UserHostAddress
和UserHostName
属性:
string ip = Request.UserHostAddress;
string hostname = Request.UserHostName;
这可能是最好的选择,但我知道我的浏览器从未发送这些报头。也许这些是IE功能。 – Pointy
@Pointy,用户的IP地址不作为任何头发送。它由底层套接字确定,因此使用哪个浏览器发送HTTP请求并不重要。事实上,您可以使用WebClient编写.NET程序来发送来自某台计算机的HTTP请求,并且客户端的IP地址仍将被提取。就用户主机名而言,ASP.NET试图使用DNS来解决它。 –
啊,我明白你的意思 - 这是服务器端基础设施的功能。谢谢! – Pointy