gpt4 book ai didi

c# - 使用 signalR Core Client 忽略 SSL 错误

转载 作者:行者123 更新时间:2023-12-01 19:33:53 40 4
gpt4 key购买 nike

我正在制作一个应用程序,其中涉及本地主机上的网站作为 Asp.net Core 和 SignalR Core 的用户界面。

我的问题是在启动连接时出现身份验证异常。我知道发生这种情况是因为我还没有运行 dotnet dev-certs https --trust。但我不能指望普通用户运行此命令或根本安装 dotnet SDK。

我尝试过使用

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

在我的 Startup.cs 中(以及其他地方,但我知道这是一个全局设置。无论如何,它都是在 HubConnection 之前执行的)无济于事。我还尝试设置一个新的 HttpMessageHandlerFactory,但文档告诉我这不会影响 Websockets。

我不相信this是一个解决方案,因为我不能使用不同的 HttpClient (除非我弄错了)

如您所见,我根本没有连接到 https:

connection = new HubConnectionBuilder().WithUrl("http://localhost:5000/MiniLyokoHub" ).Build();

所以我不明白为什么它甚至试图获取证书。

这是完整的错误: https://pastebin.com/1ELbeWtc

如何解决这个问题?我不需要证书,因为用户将连接到他们自己的本地主机。或者我不应该使用 websockets?

最佳答案

连接到 HTTPS 时,要始终将 SSL 证书识别为在 SignalR Core 客户端中已成功验证,您应该在 HttpMessageHandlerFactory 中执行此操作配置。使用HttpConnectionOptionsWithUrl方法如下:

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();

关于c# - 使用 signalR Core Client 忽略 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55345115/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com