Ошибка при использовании действительных учетных данных при использовании нескольких asp. net основных сигнальных хабов: angular и asp. net core 2.1 - PullRequest
0 голосов
/ 19 февраля 2020

Когда я пытался использовать мульти-сигнальные концентраторы в моем приложении, я сталкивался с этой ошибкой:

Соединение WebSocket с 'ws: // localhost: 12574 / StockHub? Id = D2xjWXyS2iRhsW5zHRnEqw & access_token = eyJhbGIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJSIIIJIJIJIJIIJIJIJI eyJpZCI6IkZJcVVLQVd5N1VzJTNEIiwiZGVsaWdhdGVkVXNlcklkIjoiRklxVUtBV3k3VXMlM0QiLCJpc1BlcnNpc3RlbnQiOiJGYWxzZSIsInVzZXJFbWFpbCI6ImhhbmFuLnNheWVkLmVscWVtYW1AZ21haWwuY29tIiwibW9iaWxlIjoiOTk5OTk5OTk5OSIsInBjX2lwIjoiMTAuMC40LjUiLCJqb2IiOiJkZXYiLCJwb3NpdGlvbiI6IkVtcGxveWVlIiwicG9zaXRpb25LZXkiOiJlbXBsb3llZSIsImxhbmciOiJhciIsImJyb3dzZXIiOiJDaHJvbWUiLCJuYW1lIjoiSGFuYW4gYWxpIGFobWVkIGFobWVkIiwiZGVwYXJ0bWVudCI6Itiq2LnYr9mK2YQg2KfZhNin2K_Yp9ix2YciLCJzdGF0aWNLZXkiOiJ1c2VyIiwibmJmIjoxNTgyMDk4NTgwLCJleHAiOjE1ODIzNTc3ODAsImlhdCI6MTU4MjA5ODU4MH0.3ChJytgrdwQ8Zgj8HQmhV-г-J7ks0NDLutqfq8h2fZg»не удалось: HTTP Ошибка аутентификации; допустимые учетные данные недоступны

Примечание:

Первое подключение успешно установлено. Эта ошибка возникает при попытке установить второе соединение

Мой код ASP. net Ядро:

Первый концентратор:


[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public class QDeskHub: Hub
    {
              public override async Task OnConnectedAsync()
        {

                               await base.OnConnectedAsync();

        }
        public override async Task OnDisconnectedAsync(Exception exception)
        {
                            await base.OnDisconnectedAsync(exception);

        }
          }

Второй концентратор:

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public class stockHub: Hub
    {
        public stockHub()
        {
        }

        public override async Task OnConnectedAsync()
        {
            string connectionId = Context.ConnectionId;

            await base.OnConnectedAsync();

        }
        public override async Task OnDisconnectedAsync(Exception exception)
        {

            await base.OnDisconnectedAsync(exception);

        }
    }

запуск:

    app.UseSignalR(routes =>
                {
                    routes.MapHub<QDeskHub>("/QDesk");
                    routes.MapHub<stockHub>("/StockHub");

                });

Angular:

 public hubConnection: signalR.HubConnection
  public connectionStarted = false;
  /* to start connection with hub */
  public startConnection = (url) => {

    this.hubConnection = new signalR.HubConnectionBuilder()
      .withUrl(url, { accessTokenFactory: () => localStorage.getItem("token") })
      .build();
    // this.hubConnection.serverTimeoutInMilliseconds=50000;
    this.hubConnection
      .start()
      .then(() => {
        debugger;
        this.connectionStarted = true
        console.log('Connection started')
      })
      .catch(err => console.log('Error while starting connection: ' + err))

    this.hubConnection.onclose(() => {
      debugger;
      setTimeout(() => {
        this.hubConnection
          .start()
          .then(() => {
            this.connectionStarted = true
            console.log('Connection re-started')
          })
          .catch(err => console.log('Error while re-starting connection: ' + err))
      }, 1000);
    })

  }

In angular компоненты:

this.signalRService.startConnection(this.pathAPI + "QDesk");

this.signalRService.startConnection(this.pathAPI + "StockHub");

...