使用 signalR 核心客户端忽略 SSL 错误
Ignore SSL errors with signalR Core Client
我正在制作一个应用程序,该应用程序涉及本地主机上的网站作为具有 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?
SignalR Core Client 似乎也受制于 Https 重定向
这就是它无法连接到 http 端口的原因。
对于我的用例,我只需要在 Startup.cs
中禁用它
连接到 HTTPS 时,要始终在 SignalR Core 客户端中验证 SSL 证书,您应该在 HttpMessageHandlerFactory
配置中执行此操作。在 WithUrl
中使用 HttpConnectionOptions
方法如下:
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();
我正在制作一个应用程序,该应用程序涉及本地主机上的网站作为具有 Asp.net Core 和 SignalR Core 的用户界面。
我的问题是在启动连接时出现身份验证异常。
我知道会发生这种情况,因为我没有 运行 dotnet dev-certs https --trust
。但我不能指望普通用户 运行 这个命令或安装 dotnet SDK。
我试过使用
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
在我的Startup.cs(和其他地方,但我知道这是一个全局设置。无论如何它是在 HubConnection 之前执行的) 无济于事。 我还尝试设置一个新的 HttpMessageHandlerFactory,但文档告诉我这不会影响 Websockets。
我不相信
如您所见,我根本没有连接到 https:
connection = new HubConnectionBuilder().WithUrl("http://localhost:5000/MiniLyokoHub" ).Build();
所以我不明白为什么它还要尝试获取证书。
这是完整的错误: https://pastebin.com/1ELbeWtc
我该如何解决这个问题? 我不需要证书,因为用户将连接到他们自己的本地主机。 还是我不应该使用 websockets?
SignalR Core Client 似乎也受制于 Https 重定向 这就是它无法连接到 http 端口的原因。
对于我的用例,我只需要在 Startup.cs
中禁用它连接到 HTTPS 时,要始终在 SignalR Core 客户端中验证 SSL 证书,您应该在 HttpMessageHandlerFactory
配置中执行此操作。在 WithUrl
中使用 HttpConnectionOptions
方法如下:
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();