自动代理检测可能已启用,而手动代理字符串却为空。WinHttpGetIEProxyConfigForCurrentUser() 返回的是配置字段,而不是 每个目标的最终端点。

字段含义
手动代理显式配置的值
自动配置 URLPAC 脚本的位置
自动检测标志是否启用了发现

该结构体是输出。在调用函数之前设置其自动检测成员并不会启用 Windows 发现。请使用返回的字段,按照文档所述的标志构造单独的自动代理请求。

先解析,再应用

诸如 WinHttpGetProxyForUrl() 之类的 API 会评估实际的目标 URL。请提供该 URL,而不是 PAC 下载 URL,并将解析结果应用到相应的 WinHTTP 请求。

直接结果同样有效。脚本下载、脚本评估和代理连接的错误发生在不同阶段。请检查失败代码,并遵守返回字符串的所有权规则。

谁的配置?

“CurrentUser”指的是调用方的上下文。未经适当模拟的服务可能读取其服务账户的设置,而不是桌面用户的设置。

请有意选择:服务是使用托管设置,还是遵循已授权用户的配置,包括不存在交互式用户时的行为。令牌处理和资源清理必须遵循受支持的标识 API。

进行诊断时,请把调用账户、配置字段、目标、解析结果和首次连接错误放在一起。这样可以看是哪个阶段产生了空值或失败的路由。

相关文章