2010-10-02 51 views
5

我们有一个调用webservice的ASP.NET网站。如果ASP.NET网站上没有启用模拟,则对Web服务的调用速度很慢 - 使用WireShark,我们看到它正在制作WPAD查询。从ASP.NET调用webservice的WPAD查询

如果模拟已打开并且它正在模拟管理员用户,则对Web服务的调用速度很快 - 使用WireShark我们不会进行WPAD查询。

有没有人见过这个?我们如何防止NetworkService(默认情况下是ASP.NET网站使用的网络服务)不会生成WPAD查询。

为什么冒充管理员用户不会导致WPAD查询?

这是我们在Wireshark中看到的条目:

NBNS名称查询NB WPAD < 00>

回答

4

我有完全相同的问题。

WPAD代表Web Proxy Auto Discovery。

协议的细节可以在维基百科上找到。

当您在Internet Explorer->工具 - > Internet选项 - >连接 - > LAN设置中选中“自动检测设置”时,机器将始终使用WPAD协议在网络之前查询自动检测代理使任何网络连接。

即使设置在IE中,它也适用于整台机器,因此任何客户端都试图连接到该机器的Web服务。这也是IE中的默认设置。

打开WPAD时,当进行任何Web连接时,客户机将查询您的DNS和WINS服务器以查找自动代理,并且还会产生一系列要求自动代理的广播。

直到收到响应或者某个超时时间(据我所知,超时时间是任意的 - 也许某些WPAD精明的人可以提供答案?),连接将不会经过。

您在Wireshark中看到的“NBNS名称查询NB WPAD”消息是查询WINS服务器以查找自动代理的客户端。如果您没有看到服务器将这些数据包发送到的答复,那么您的网络设置有问题。服务器应该回复没有自动代理或自动代理服务器的详细信息。

我们遇到的问题是,Windows Server 2008 DNS服务器默认配置为忽略WPAD请求(即根本不回答) - 这就是我们作为DNS/WINS服务器运行的内容。我们没有运行自动代理,所以Windows Server 2008 DNS服务器应该回复“否”。因为它没有,我们的客户会在放弃和初始连接之前枉费30秒左右的时间。

好消息是,有三种解决方案,这一问题:

1)关闭IE中“自动检测设置”任何机器上被用作客户端的Web服务

2)编辑machine.config或app.config的Web服务客户端应用程序绕过本地代理设置。你可以找到关于如何做到这一点这里的信息:

http://support.microsoft.com/kb/968699

3)确保你的网络的DNS服务器被配置为正确地WPAD请求作出回应。

最后,这里是对WPAD一些信息,我发现非常有用的链接在调试这个问题我自己:

http://www.isaserver.org/articles/ISA2004_ClientAutoConfig.html

希望这有助于!

+1

非常感谢你回答这个问题。你刚刚救了我一周! – Sune 2015-09-17 10:14:10