首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角SignalR认证问题

问角SignalR认证问题
EN

Stack Overflow用户
提问于 2022-11-14 14:55:28
回答 1查看 60关注 0票数 0

我们正在使用微软提供的@ Microsoft /signalr组件从角度UI连接到我们的signaR服务。当我们没有发送承载授权cookie时,我们能够连接到服务器。但是,当我们向signalR服务发送cookie时,我们会看到以下错误:

错误:无法启动连接:错误:无法用任何可用传输连接到服务器。错误: WebSockets失败:错误: WebSocket连接失败。无法在服务器上找到连接,或者端点可能不是SignalR端点,连接ID不在服务器上,或者存在代理阻塞WebSockets.If,多个服务器检查是否启用了粘性会话。

我们已经通过一个signalR窗口应用程序对.Net服务进行了测试,并且它在那里工作得很好。我们还测试了使用websockets通过邮递员连接服务,我们在那里也没有任何问题。我们尝试过许多方法来尝试围绕这一问题开展工作,但都没有结果。

我曾尝试通过邮递员和windows应用程序连接到服务器,并且按预期工作。

代码语言:javascript
复制
public init() {
  let token = "OKTA token";
  let tokenValue = '';

  if (token !== '') {
    tokenValue = '?token=' + token;
  }

  this.hubConnection = new signalR.HubConnectionBuilder
  .withUrl("https://server:25247/netshub/",{// +tokenValue
    accessTokenFactory: () =>  {
      return token;
    }
  })

  this.hubConnection.start().catch((err) => console.error(err.toString()));
}
EN

回答 1

Stack Overflow用户

发布于 2022-11-14 15:43:01

在我的例子中,它是不正确的集线器选项:缺少withCredentials: true和令牌应该是一个空值(只有长字符串,没有任何装饰等等-参见.replace('Bearer ', '') )。我的代码:

代码语言:javascript
复制
private hubOptions: IHttpConnectionOptions = {
    withCredentials: true,
    accessTokenFactory: async () => {
      return (await this.authenticationService.GetAccessToken()).replace('Bearer ', '');
    }
  };

this.hubConnection = new HubConnectionBuilder()
      .withUrl(this.hubUrl, this.hubOptions)
      .withAutomaticReconnect()
      .build();

    this.hubConnection
      .start()

记住要使用安全连接: https和wss协议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74433580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档