Я пытаюсь подключить приложение C # .NET 4.7 в качестве клиента к моей службе Azure SignalR. Я использую ASP.NET-версию клиентской библиотеки SignalR, а не ASP.NET CORE.
У меня есть код, настроенный так:
var serviceUtils = new ServiceUtils(ConfigurationManager.ConnectionStrings["Azure:SignalR:ConnectionString"].ConnectionString);
var url = $"{utils.Endpoint}/client/";
_connection = new HubConnection(url, $"?hub={hubName}")
{
ConnectionToken = serviceUtils.GenerateAccessToken(url, userId)
};
IHubProxy proxy = _connection.CreateHubProxy(hubName);
await _connection.Start().ConfigureAwait(false);
Однако это не работает. Я получаю 'StatusCode: 401, ReasonPhrase:' Unauthorized '', когда _connection.Start () генерирует исключение.
Генерация токена "ServiceUtils" взята из примера здесь:
https://github.com/vavjeeva/AzureSignalRConsoleApp/blob/master/AzureSignalRConsoleApp.Utils/ServiceUtils.cs
Интересно, что я реализовал ту же логику в базовом консольном приложении C # .Net Core, используя версию библиотеки .Net Core, и она действительно работает, используя ту же строку подключения. Разница в том, что я использую HubConnectionBuilder, которого нет в версии библиотеки asp.net. Я предполагаю, что оба аутентифицируются по-разному.
Как мне получить такую функциональность, работающую в этой версии библиотеки? Я хочу, чтобы приложение-служба в качестве клиента могло вызывать методы hubu через службу Azure SignalR.