WPAD查询从ASP.NET调用webservice

Con*_*per 5 asp.net

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

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

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

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

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

NBNS名称查询NB WPAD <00>

Joe*_*can 5

我有同样的问题。

WPAD 代表 Web 代理自动发现。

可以在 Wikipedia 上找到有关该协议的详细信息。

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

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

启用 WPAD 后,在进行任何 Web 连接时,客户端计算机将查询您的 DNS 和 WINS 服务器以查找自动代理,并且还将进行一系列广播请求自动代理。

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

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

我们遇到的问题是 Windows Server 2008 DNS 服务器默认配置为忽略 WPAD 请求(即它们根本不响应)——这就是我们作为 DNS/WINS 服务器运行的。我们没有运行自动代理,因此 Windows Server 2008 DNS 服务器应该回答“否”。由于它没有,我们的客户端会在放弃并只是建立初始连接之前徒劳地查询长达 30 秒左右。

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

  1. 在用作 Web 服务客户端的任何计算机上关闭 IE 中的“自动检测设置”

  2. 编辑 web 服务客户端应用程序的 machine.config 或 app.config 以绕过本地代理设置。您可以在此处找到有关如何执行此操作的信息:

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

  1. 确保您的网络 DNS 服务器配置为正确响应 WPAD 请求。

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

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

希望这可以帮助!