2011-06-13 205 views
5

我正在使用以下代码。当在本地主机上运行时,它会正确提供客户机名称,但是当我运行它时,开发服务器不会给出实际结果。任何想法?获取客户端计算机名称

这是一个asp.net mvc应用程序。

string clientMachineName; 
clientMachineName = 
    (Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName); 
Response.Write(clientMachineName); 

我想要提出请求的客户端的计算机名称或计算机名称。上面的代码给了我一个值'172.16.12.100'。

任何帮助非常感谢。

+0

这是ASP.NET吗?什么版本?请将此信息添加到标记 – balexandre 2011-06-13 12:03:35

+0

是的,它是在asp.net应用程序 – Lamps 2011-06-13 12:04:03

+0

哪个结果是你在开发服务器上?预期的结果是什么? – 2011-06-13 12:08:46

回答

9

你确实意识到,你在问什么以及你在做什么错了吗?

您首先需要了解什么是IP地址

当使用Request.ServerVariables("REMOTE_ADDR")时,这永远不会是“真实地址”, ,因为不会发送“真实地址”。

IP地址是在网络层使用的东西,不应该真的被应用程序使用,如果您确实需要给定机器的身份,则需要使用类似X.509 certificates的内容,这些内容旨在表示身份(IP地址不是身份)。

当用户在NAT后面时,您将遇到问题,并且您永远不会获得用户的正确标识。

这就是为什么在localhost下一切正常,但很快你想在你的“盒子”之外的东西一切都开始变差。

+0

会很高兴知道为什么投票。 – balexandre 2011-06-13 12:23:56

+0

感谢您的回答。 – Lamps 2011-06-13 12:35:46

+0

即使在Intranet的情况下,我们也无法获得客户机名称? – Lamps 2011-06-13 12:40:23

1

您无法保证在远程网络上获取该信息。我假设你的开发者服务器不在同一个网络上。

相关问题