ASP.NET Core SignalR クライアントを起動する前に、接続オプションを構成します。

var connection = new HubConnectionBuilder()
    .WithUrl("https://events.example/hub", options =>
    {
        options.Proxy = new WebProxy("http://proxy.example:8080");
    })
    .Build();

この断片は最新の SignalR クライアントと System.Net を使用します。 connection アプリケーションの非同期ライフサイクルを通じて管理し、ハブの URL は宛先として維持します。プロキシ資格情報を構成しない、許可されたパブリック ハブのテストには、 HTTP プロキシ一覧 が候補となる HTTP 中間サーバーを提供します。

トランスポートの設定プロキシが適用される箇所
既定の接続動作HttpConnectionOptions.Proxy は中間サーバーを選択します。.NET 8 の既定の WebSocket トランスポートもこれを ClientWebSocketOptions に割り当てます
HttpMessageHandlerFactoryHTTP 処理をカスタマイズするもので、WebSocket 接続には適用されません
供給された WebSocketFactoryは独自の作成動作を持ち、必要な経路を適用しなければなりません

ネゴシエーションの成功は、後続の WebSocket トンネルが受け入れられたことを証明しません。カスタム WebSocketFactory が .NET ClientWebSocket を使用する場合は、 接続する前にそのソケットのプロキシを構成してください. 最後に完了した手順のトランスポート診断を読み、意図的なフォールバック トランスポートも確認してください。

古い ASP.NET SignalR の例が設定する Connection.Proxy は別世代のものです。HubConnectionBuilder では、プロキシを他の WithUrl トランスポート オプションとともに保持し、無関係な HTTP 要求を構成しないでください。

関連記事