.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)
};エンドポイントとアカウントの変数は例示です。これにより、宛先アドレス、プロキシ アドレス、プロキシ アカウントが分離されます。
入力形式が資格情報を含む URL を渡す場合は、そのユーザー情報を意図的に解析してください。コロンを含むパスワードは、資格情報の区切り文字だけで分割して保持し、エンコードされた要素は適切な段階でデコードします。そのパーサーを診断するときに元の URL を出力しないでください。
環境設定として機能するプロキシ URL でも、別のコンストラクターに渡すと動作が変わる可能性があります。環境プロキシの初期化には独自の解析ロジックがあり、すべてのコンストラクターが同じフィールドを使うという保証ではありません。
最後に、要求を実行するハンドラーに構成済みのプロキシ オブジェクトを設定します。使われていない WebProxy 上の正しい資格情報は接続に影響しません。