没有自动配置文件的发现

如果本地网络上尚未部署代理自动配置文件,WinHttpGetProxyForUrl 找不到代理服务器。 如果 WinHttpGetProxyForUrl 失败,则有多种可能的回退策略可用于获取可行的代理配置,具体取决于其运行时环境。 其中包括通过用户界面提示代理设置,要求有人使用 WinHTTP“ProxyCfg.exe”实用工具将代理配置存储在注册表中,或使用 WinHttpGetIEProxyConfigForCurrentUser 来检查代理服务器是否在 Internet Explorer 的设置中列出。

可能没有代理自动配置文件,因为客户端具有直接 Internet 连接,例如通过 ISP,并且不需要代理服务器。

另一方面,可能需要代理服务器,但本地网络可能不支持 WPAD。 在这种情况下,必须从用户获取代理配置,或在客户端计算机上的某个位置找到代理配置。

在中间层服务器环境中(如 COM+ 或 ASP 应用程序)中运行的基于 WinHTTP 的应用程序应依赖于使用“ProxyCfg.exe”实用工具在注册表中设置默认代理配置的服务器管理员。 然后,可以使用 WinHttpGetDefaultProxyConfiguration 函数检索此默认配置信息,或者只需在 winHttpOpen调用中指定WINHTTP_ACCESS_TYPE_PRECONFIG 标志即可。

另一方面,在客户端计算机上运行的 WinHTTP 应用程序可以尝试检查 Internet Explorer 的代理设置。 WinHttpGetIEProxyConfigForCurrentUser 使用当前用户的 Internet Explorer 代理设置(拨号、VPN 或 LAN)填充调用方提供的 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 结构。 此配置可能指示使用自动检测,或者可以指定代理自动配置文件的 URL,或者可以指定要使用的实际代理服务器,也可以指定三者的组合。 如果此信息包括 PAC URL 或代理服务器,则 WinHTTP 应用程序可以尝试使用这些 URL。

可以在平台软件开发工具包 (SDK) WinHTTP 示例中找到使用 WinHttpGetProxyForUrlWinHttpGetIEProxyConfigForCurrentUser 函数的示例。