为了账号安全,请及时绑定邮箱和手机立即绑定

使用 signalR 核心客户端忽略 SSL 错误

使用 signalR 核心客户端忽略 SSL 错误

C#
慕丝7291255 2022-11-13 14:26:19
我正在制作一个应用程序,其中涉及 localhost 上的网站作为 Asp.net Core 和 SignalR Core 的用户界面。我的问题是在启动连接时出现身份验证异常。我知道会发生这种情况,因为我没有跑过dotnet dev-certs https --trust。但我不能指望普通用户运行此命令或安装 dotnet SDK。我试过使用ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;在我的 Startup.cs(和其他地方,但我知道这是一个全局设置。无论如何它是在 HubConnection 之前执行的)无济于事。我还尝试设置一个新的 HttpMessageHandlerFactory,但文档告诉我这不会影响 Websockets。我不相信这是一个解决方案,因为我不能使用不同的 HttpClient(除非我弄错了)如您所见,我根本没有连接到 https:connection = new HubConnectionBuilder().WithUrl("http://localhost:5000/MiniLyokoHub" ).Build();所以我不明白为什么它甚至试图获得证书。这是完整的错误: https ://pastebin.com/1ELbeWtc我该如何解决这个问题?我不需要证书,因为用户将连接到他们自己的本地主机。还是我不应该使用 websockets?
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

连接到 HTTPS 时,要始终在 SignalR Core 客户端中验证 SSL 证书,您应该在配置中执行此操作HttpMessageHandlerFactory。HttpConnectionOptions在这样的方法中使用WithUrl:


connection = new HubConnectionBuilder()

.WithUrl("https://localhost:443/MiniLyokoHub", (opts) =>

{

    opts.HttpMessageHandlerFactory = (message) =>

    {

        if (message is HttpClientHandler clientHandler)

            // always verify the SSL certificate

            clientHandler.ServerCertificateCustomValidationCallback +=

                (sender, certificate, chain, sslPolicyErrors) => { return true; };

        return message;

    };

})

.Build();


查看完整回答
反对 回复 2022-11-13
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

似乎 SignalR Core Client 也受Https 重定向影响, 这就是它无法连接到 http 端口的原因。

对于我的用例,我只需要在 Startup.cs 中禁用它


查看完整回答
反对 回复 2022-11-13
  • 2 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信