ASP NET Core SignalR OnDisconnectedAsync не срабатывает если хаб с Authorize атрибутом
.net core 2.1
Код хаба:
[Authorize]
public class OnlineHub : Hub
{
public override async System.Threading.Tasks.Task OnConnectedAsync()
{
int userId = Context.UserIdentifier;
await base.OnConnectedAsync();
}
[AllowAnonymous]
public override async System.Threading.Tasks.Task OnDisconnectedAsync(Exception exception)
{
var b = Context.ConnectionId;
await base.OnDisconnectedAsync(exception);
}
Код клиента
$(document).ready(() => {
let token = "token";
const connection = new signalR.HubConnectionBuilder()
.withUrl("https://localhost:44343/online", { accessTokenFactory: () => token })
.configureLogging(signalR.LogLevel.Debug)
.build();
connection.start().catch(err => console.error(err.toString()));
});
Если убрать Authorize, то все работает хорошо, за исключением того, что не определяется пользователь при коннекте, что в общем то понятно. Но как только добавляем Authorize и токен, то OnConnectedAsync срабатывает и пользователь определяется, но при закрытии браузера, OnDisconnected не срабатывает. Даже если выждать таймаут, который по умолчанию = 30 сек.
Сталкивался кто либо с такой проблемой?