比较有吸引力的问题,MS开的玩笑,你有解决办法么?
众所周知,几乎任何应用系统都含日志功能。基于.Net平台的web应用也不例外。然而HttpRequest类提供的UserHostAddress可以获取远程主机的IP地址,但是UserHostName却不能获取远程主机的机器名。事实上,后者返回居然也是远程IP地址。怎么回事,强大的MS为何在这个问题上仅提供了接口,却未提供文档中声称的功能。
后来,在MSDN上查找了相关资料,发现DNS类可以根据IP地址获取主机名,于是做了一个简单的控制台应用程序,写了个转换函数(功能:根据远程IP地址获取机器名),测试一下,很快!耗时几乎为0毫秒。然而随后又做了个简单web应用,发现同样的代码,在模拟真实环境(一台机器访问另一台服务器)测试时,耗时几乎为20秒。为何差距会如此之大?显然,这么长的等待时间是不可忍受的。
小弟的问题是:
(1)为何UserHostName不能返回预期的远程机器名?
(2)同样方法在桌面应用效果好,而在web应用中效果差,难道.net框架对这2中应用的内在处理机制不一样么?
(3)j2ee平台上的web应用不存在这个问题,那么就.net平台的web应用,我如何有效解决这个问题?