保留 .NET 按目标区分的自动代理决策
保留按目标区分的自动代理决策,而不要用一个测试 URL 的结果来替换整个策略。
为单个 URL 解析出代理,只会给出针对该 URL 的决策,并不会揭示适用于每个目标的完整自动路由策略。
当代码用外部测试地址调用 GetProxy、取出返回的 URI 并全局安装一个新的固定 WebProxy 时,这一点就很关键。原来的策略可能会把另一个主机直连,或选择不同的代理。替换操作把这一信息丢掉了。
如果确实需要依赖目标的行为,请在客户端保留受支持的策略对象。针对真正出错的 URL 检查它的决策,而不是拿一个无关的网站当作通用探针。
也要正确理解“直连”决策。当目标被绕过时,实现可能返回原始目标;应当比较绕过决策,而不是自动把该 URI 重新标记为代理。
如果固定端点就是应用想要的策略,请显式配置它并记录这一选择。一个偶然从某次自动代理结果推导出的固定路由,在下一个目标表现不同时会极难解释。