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

这是一个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下一切正常的原因,但是不久之后您想要在“盒子”之外的东西一切开始变糟。

10-02 02:09