URI 可以在其主机之前包含 username:password。这并不意味着每个接受该 URI 的 .NET API 都会把用户信息复制到身份验证对象中。

直接构造 WebProxy 时,请把凭据分配写明确:

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    Credentials = new NetworkCredential(proxyUser, proxyPassword)
};

endpoint 和帐户变量仅作示例。这样可以让目标地址、代理地址和代理帐户保持分离。

如果某种输入格式提供带凭据的 URL,请有意地解析其中的用户信息。对于包含冒号的密码,只在凭据分隔符处拆分以保留它,并在适当的阶段解码已编码的部分。诊断该解析器时避免打印原始 URL。

作为环境设置可用的代理 URL,在传入另一个构造函数时行为仍可能不同。环境代理初始化有自己的解析逻辑;它并不保证每个构造函数都使用相同的字段。

最后,把配置好的代理对象设置到执行请求的处理程序上。未使用的 WebProxy 上的正确凭据不会影响连接。

相关文章