.NET WebProxy 的显式凭据
在构造 .NET WebProxy 时显式分配凭据,而不要假定带凭据的 URI 会填充其帐户。
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 上的正确凭据不会影响连接。