我们有一个ASP.NET网站,它调用web服务.如果ASP.NET网站没有启用模拟,那么对Web服务的调用很慢 - 使用WireShark我们看到它正在进行WPAD查询.
如果模拟开启并且模仿管理员用户,则对Web服务的调用很快 - 使用WireShark我们不会进行WPAD查询.
谁看过这个吗?我们如何阻止NetworkService,默认情况下是ASP.NET网站使用的,不会进行WPAD查询.
为什么冒充管理员用户不会导致WPAD查询?
这是我们在WireShark中看到的条目:
NBNS名称查询NB WPAD <00>
我有同样的问题。
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 秒左右。
好消息是这个问题有三种解决方案:
在用作 Web 服务客户端的任何计算机上关闭 IE 中的“自动检测设置”
编辑 web 服务客户端应用程序的 machine.config 或 app.config 以绕过本地代理设置。您可以在此处找到有关如何执行此操作的信息:
http://support.microsoft.com/kb/968699
最后,这里有一个链接,指向有关 WPAD 的一些信息,我在自己调试此问题时发现这些信息非常有用:
http://www.isaserver.org/articles/ISA2004_ClientAutoConfig.html
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
11225 次 |
| 最近记录: |