WPAD查询从ASP.NET调用webservice

时间:2010-10-02 22:25:39

标签: asp.net

我们有一个调用web服务的ASP.NET网站。如果ASP.NET网站没有启用模拟,那么对Web服务的调用很慢 - 使用WireShark我们看到它正在进行WPAD查询。

如果模拟开启并且冒充管理员用户,则对Web服务的调用很快 - 使用WireShark我们不会进行WPAD查询。

有没有人见过这个?我们如何阻止NetworkService,默认情况下是ASP.NET网站使用的,不会进行WPAD查询。

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

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

NBNS名称查询NB WPAD< 00>

1 个答案:

答案 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

希望这有帮助!