【问题标题】:How to ignore SSL validation errors from angular client when using SignalR (.Net Core)?使用 SignalR (.Net Core) 时如何忽略来自角度客户端的 SSL 验证错误?
【发布时间】:2021-10-25 08:08:49
【问题描述】:

我正在使用一个 Angular 应用程序,它连接到 SignalR 服务器 (.Net 5)。当我尝试从客户端连接到服务器时,出现以下错误。

有什么方法可以忽略来自 Angular 客户端的 SSL 错误?我正在使用“@microsoft/signalr: 5.0.7 包

Angular SignalR 客户端包中是否有类似 ServerCertificateCustomValidationCallback 的东西?

下面是我的角码

var options: IHttpConnectionOptions = {
  accessTokenFactory: () => { return this.accessToken }
};

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

【问题讨论】:

  • 能否请您告诉我们您遵循的教程,以便它可以帮助我们找到问题。顺便说一句,我曾经用一个 react 前端项目创建了一个 SignalR 服务器,我的连接 url 就像https://localhost:44336/chatHub 并且它没有出现任何 ssl 错误。我的意思是您可能需要提供有关您的代码或错误消息的更多详细信息,因为屏幕截图表明see inner exception。调试它?

标签: angular asp.net-core .net-core websocket signalr


【解决方案1】:

请允许我先显示一些我的代码 sn-p 以帮助您检查是否有遗漏的配置。

我的signalr.service.ts,我参考this blog来创建我的角度项目(从使用命令创建项目到修改app.module.ts文件中的providers并运行项目以检查是否成功连接) .

import { Injectable } from '@angular/core';
import * as signalR from '@aspnet/signalr';

@Injectable({
  providedIn: 'root'
})
export class SignalrService {
  private hubConnection : signalR.HubConnection;

  constructor() { 
    this.hubConnection = new signalR.HubConnectionBuilder()
    .withUrl("https://localhost:44336/chatHub").build();
  }

  public startConnection = () =>{
    this.hubConnection.start()
      .then(()=>console.log("Connection start"))
      .catch(err =>{
        console.log("error while starting :" + err);
    });
  };
}

我跟随this document为signalr创建了我的asp.net核心网络应用程序,但请注意,由于您的情况是前端+后端,我们需要在startup.cs中设置cors策略,这将使@ 987654328@ 方法如下所示:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddCors(options =>
            {
                options.AddPolicy(name: "CorsPolicy",
                                  builder =>
                                  {
                                      builder.AllowAnyMethod()
                                      .WithOrigins("http://localhost:4200")
                                      .AllowAnyHeader()
                                      .AllowCredentials();
                                  });
            });
            services.AddSignalR();
        }

然后当我们启动两个项目时,我们可以看到连接建立成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2011-06-12
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多