.NET Framework アプリケーションでは、プロキシ モジュールを configuration/system.net/defaultProxy の下に登録します:

<defaultProxy>
  <module type="Company.Network.RoutingProxy, Company.Network" />
</defaultProxy>

最初の名前は型で、2 番目はそのアセンブリ ID であり、DLL パスではありません。アセンブリと依存関係は、アプリケーションの通常の規則に従って読み込まれる必要があります。

2 つのゲートを確認します。まず、ランタイムはパラメーターなしのコンストラクターを介して IWebProxy を実装するパブリック型を構築する必要があります。読み込みまたは構築の失敗による内部例外を保持してください。それらはプロキシ TCP 接続より前に発生します。デスクトップ リリースでは、登録が実行可能ファイルの展開された構成に到達したことを確認します。ClickOnce では、ビルド済み、発行済み、インストール済みの .exe.config を比較します。クラス ライブラリの App.config は通常、そのホスト プロセスを構成しません。

次に、要求がその既定値を使用する必要があります。明示的なプロキシ割り当てがそれを上書きする可能性があり、別の HTTP スタックはこの構成モデルを読まない場合があります。モジュール内では、GetProxy と IsBypassed は一貫した判断を必要とし、絶対プロキシ URI は正しいスキームとポートを使用する必要があります。

資格情報の動作も一貫させます。ハードコードされたアカウントを生成し、そのセッターを無視する getter は、読み込みが成功した後でも後の構成を無効にする可能性があります。

これは .NET Framework の保守メカニズムです。現在の .NET では、このレガシ system.net 登録がすべての HttpClient を制御することを期待するのではなく、ネットワーク クライアントがサポートするプロキシ構成を使用してください。

関連記事