Перед запуском клиента 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 выбирает посредника; транспорт WebSocket по умолчанию в .NET 8 также назначает его ClientWebSocketOptions
HttpMessageHandlerFactoryНастраивает обработку HTTP, а не подключения WebSocket
Переданная WebSocketFactoryимеет собственное поведение создания и должна применить требуемый маршрут

Успешное согласование не доказывает, что последующий туннель WebSocket был принят. Если пользовательская WebSocketFactory использует .NET ClientWebSocket, настройте прокси этого сокета перед подключением. Читайте диагностику транспорта для последнего завершённого шага и проверяйте также любой намеренный резервный транспорт.

Старые примеры ASP.NET SignalR, которые задают Connection.Proxy относятся к другому поколению. С HubConnectionBuilder держите прокси вместе с остальными WithUrl параметрами транспорта, а не настраивайте несвязанный HTTP-запрос.

Похожие статьи