Получение 400 неверных запросов на HubConnection в режиме по умолчанию Azure SignalRC#

Место общения программистов C#
Ответить
Anonymous
 Получение 400 неверных запросов на HubConnection в режиме по умолчанию Azure SignalR

Сообщение Anonymous »

У меня есть служба Azure Signal R, работающая в режиме по умолчанию.
У меня есть процесс, который выполняется в долговременной устойчивой функции. Когда этот процесс завершится, я хочу отправить сообщение группе пользователей через мою службу Azure Signal R. Нам нужно отправлять через службу Azure, поскольку мы используем Azure Front Door, которая в настоящее время блокирует запросы веб-сокетов. Наше приложение blazor уже подключено к службе Azure signal R и использует ее, поэтому его нельзя изменить на бессерверное.
У меня есть приложение blazor в .Net 9, где я создал концентратор для отслеживания сообщений.
Проблема в том, что каждый раз, когда я запускаю StartAsync() при подключении к концентратору, я получаю ответ 400 без подробностей о том, почему.
Это мое Хаб

Код: Выделить всё

public class AdvisorMessagesHub : Hub
{
public async Task SendTestMessage(string name, string message)
{
Console.WriteLine($"### - [{Context.ConnectionId}] Send Test Message [{name}]: {message}");
await Clients.All.ReceiveTestMessage(name, message);
}

public async Task JoinAdvisorGroupAsync(long advisorId)
{
Console.WriteLine($"### - [{Context.ConnectionId}] Join Advisor Group [{advisorId}]");
await Groups.AddToGroupAsync(Context.ConnectionId, advisorId.ToString());
}
}

В моей службе концентратора Signal R есть метод, который инициализирует соединение моего концентратора.

Код: Выделить всё

private HubConnection InitializeAzureSignalR()
{
try
{
var serviceUtils = new ServiceUtils(_configService.GetConfigurationValue(ConfigurationConstants.ConfigurationKeys.SignalR.SignalRConnectionString));

var url = GetClientUrl(serviceUtils.Endpoint, SignalRHubConstants.HubNames.AdvisorMessages);

var connection = new HubConnectionBuilder()
.WithUrl(url, option =>
{
option.AccessTokenProvider = () =>
{
return Task.FromResult(serviceUtils.GenerateAccessToken(url));
};
})
.ConfigureLogging(config =>
{
config.SetMinimumLevel(LogLevel.Error);
})
.WithAutomaticReconnect()
.Build();

return connection;
}
catch (Exception e)
{
_logger.WriteException(e, "Error during connection to Azure SignalR Service");
throw;
}
}

private string GetClientUrl(string endpoint, string hubName)
{
return $"{endpoint}/client/?hub={hubName}";
}

Код: Выделить всё

ServiceUtils
был взят из примеров. _configService просто извлекает значение из конфигурации, содержащей строку подключения signalr.
Ошибка происходит, когда я пытаюсь открыть соединение:

Код: Выделить всё

public async Task BeginMonitoringAsync(CancellationToken cancellationToken = default)
{
if (_connection.State == HubConnectionState.Disconnected)
{
await _connection.StartAsync(cancellationToken);
}
}

При вызове StartAsync возникает ошибка:

Код состояния ответа не указывает на успех: 400 (неверный запрос).


Подробнее здесь: https://stackoverflow.com/questions/798 ... re-signalr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»