获取客户端计算机名称
我正在使用以下代码。当在本地主机上运行时,它会正确提供客户机名称,但是当我运行它时,开发服务器不会给出实际结果。任何想法?获取客户端计算机名称
这是一个asp.net mvc应用程序。
string clientMachineName;
clientMachineName =
(Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName);
Response.Write(clientMachineName);
我想要提出请求的客户端的计算机名称或计算机名称。上面的代码给了我一个值'172.16.12.100'。
任何帮助非常感谢。
你确实意识到,你在问什么以及你在做什么错了吗?
您首先需要了解什么是IP地址。
当使用Request.ServerVariables("REMOTE_ADDR")
时,这永远不会是“真实地址”, ,因为不会发送“真实地址”。
IP地址是在网络层使用的东西,不应该真的被应用程序使用,如果您确实需要给定机器的身份,则需要使用类似X.509 certificates的内容,这些内容旨在表示身份(IP地址不是身份)。
当用户在NAT后面时,您将遇到问题,并且您永远不会获得用户的正确标识。
这就是为什么在localhost下一切正常,但很快你想在你的“盒子”之外的东西一切都开始变差。
会很高兴知道为什么投票。 – balexandre 2011-06-13 12:23:56
感谢您的回答。 – Lamps 2011-06-13 12:35:46
即使在Intranet的情况下,我们也无法获得客户机名称? – Lamps 2011-06-13 12:40:23
您无法保证在远程网络上获取该信息。我假设你的开发者服务器不在同一个网络上。
Dns.GetHostEntry Method (String)
方法向DNS服务器查询与主机名或IP地址关联的IP地址。这可能不适用于远程网络,因为您不查询相同的DNS服务器。
这是ASP.NET吗?什么版本?请将此信息添加到标记 – balexandre 2011-06-13 12:03:35
是的,它是在asp.net应用程序 – Lamps 2011-06-13 12:04:03
哪个结果是你在开发服务器上?预期的结果是什么? – 2011-06-13 12:08:46