Код: Выделить всё
public class TestHub : Hub
{
public async Task GetToken()
{
return await Task.FromResult("testtoken");
}
[Authorize]
public async Task Echo(string message)
{
return await Task.FromResult($"Echoing {message}");
}
}
Код: Выделить всё
EchoОднако это кажется невозможным, если я создам соединение SignalR в клиенте следующим образом:
Код: Выделить всё
string? token = null;
HubConnection connection = new HubConnectionBuilder()
.WithUrl("http://localhost:5100/test", options =>
{
options.AccessTokenProvider = () => Task.FromResult(token);
})
.Build();
await connection.StartAsync();
Это приводит к тому, что первоначальный вызов от клиента завершается успешно, поскольку ему не требуется авторизация, а второй завершается неудачно. :
Код: Выделить всё
token = await connection.InvokeAsync("GetToken"); // fine
string result = await connection.InvokeAsync("Echo", "Hello?"); // fails
- Есть ли способ запустить снова функция, установленная для AccessTokenProvider?
- Могу ли я установить токен вручную в клиенте?
- Или мне нужно создать отдельный хаб и использовать два соединения: одно только для получения токена, а другое требует токен с самого начала?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ry-request
Мобильная версия