var client = clients.GetOrAdd(
    "proxy-east",
    "https://example.com",
    builder => builder.ConfigureInnerHandler(handler =>
        handler.Proxy = new WebProxy("http://203.0.113.10:8080")));

ここで clients は Flurl 4 の IFlurlClientCache です。検索の前にルートを選び、再利用するクライアントに安定した名前を付けます。許可された公開リクエストでは、HTTP プロキシ一覧が内側のハンドラーの WebProxy URL の候補を提供します。proxy-east を新しいプロキシ値で再利用することは、そこに既に保持されているクライアントをリクエストごとに再構成することではありません。

アプリケーションが選んだ型に対応するハンドラー API を使用してください。Flurl は SocketsHttpHandler 用に別の構成方法を文書化しています。

選択したルートを操作のメタデータに保持し、対応するクライアント経由で呼び出します。ファクトリを参照するたびにランダムに選ぶと、1 つの論理的な処理に一貫性のないポリシーを与えてしまいます。

アプリケーションスコープでキャッシュを所有し、その増加を制限します。変化する一時的なプロキシ一覧はクライアントとリソースを蓄積し得ます。名前やログには埋め込んだパスワードではなく安全なルート識別子を使ってください。

これは、古い独自のファクトリ基盤をコピーしたり、別のリクエスト中に稼働中のハンドラーを変更したりする代わりに、Flurl 4 の名前付きキャッシュインターフェイスを使います。

関連記事