我们有一个调用web服务的ASP.NET网站。如果ASP.NET网站没有启用模拟,那么对Web服务的调用很慢 - 使用WireShark我们看到它正在进行WPAD查询。
如果模拟开启并且冒充管理员用户,则对Web服务的调用很快 - 使用WireShark我们不会进行WPAD查询。
有没有人见过这个?我们如何阻止NetworkService,默认情况下是ASP.NET网站使用的,不会进行WPAD查询。
为什么模拟管理员用户不会导致WPAD查询?
这是我们在WireShark中看到的条目:
NBNS名称查询NB WPAD< 00>
答案 0 :(得分:4)
我遇到了完全相同的问题。
WPAD代表Web代理自动发现。
有关该协议的详细信息,请访问维基百科。
当您在Internet Explorer中检查“自动检测设置” - >工具 - > Internet选项 - >连接 - >局域网设置时,机器将始终使用WPAD协议查询网络以进行自动检测在进行任何网络连接之前的代理。
即使设置在IE中,它也适用于整个机器,因此适用于任何尝试从该机器连接到Web服务的客户端。它也是IE中的默认设置。
打开WPAD后,在进行任何网络连接时,客户端计算机将查询您的DNS和WINS服务器以查找自动代理,并且还会生成一系列要求自动代理的广播。
直到接收到响应或某个超时时间(我认为超时是任意的 - 也许是WPAD精明的人可以提供答案?),连接将不会通过。)过去了。
您在Wireshark中看到的“NBNS名称查询NB WPAD”消息是客户端查询WINS服务器以获取自动代理。如果您没有看到服务器回复那些正在发送的数据包,那么您的网络设置就会出现问题。服务器应回复没有自动代理或自动代理服务器的详细信息。
我们遇到的问题是Windows Server 2008 DNS服务器默认配置为忽略WPAD请求(即它们根本不回答) - 这就是我们作为DNS / WINS服务器运行的。我们没有运行自动代理,因此Windows Server 2008 DNS服务器应该回复“否”。由于它没有,我们的客户在放弃并刚刚进行初始连接之前会徒劳地查询最多30秒左右。
好消息是这个问题有三种解决方案:
1)在用作网络服务客户端的任何计算机上关闭IE中的“自动检测设置”
2)编辑Web服务客户端应用程序的machine.config或app.config以绕过本地代理设置。您可以在此处找到有关如何执行此操作的信息:
http://support.microsoft.com/kb/968699
3)确保您的网络DNS服务器配置为正确响应WPAD请求。
最后,这里是一个关于WPAD的一些信息的链接,我发现自己在调试这个问题时非常有帮助:
http://www.isaserver.org/articles/ISA2004_ClientAutoConfig.html
希望这有帮助!