【发布时间】:2021-08-31 05:41:57
【问题描述】:
我在客户端 WPF C# 应用程序中使用来自 Microsoft.AspNet.SignalR.Client 的 SignalR。 SignalR 主机是一个 ASP.NET MVC Web 应用程序,其中 SignalR 集线器是从 Microsoft.AspNet.SignalR 创建的。这两个项目都使用 .NET4.5.2
我使用来自 ngrok.com 的名为 ngrok 的端口映射工具来创建指向我本地 Visual Studio 2019 开发环境的外部 URL。
我有 2 个 ngrok 帐户。一个用于我的个人测试,另一个用于客户。两个 URL 都指向我的开发环境,除了 AuthToken/LicenseKey 之外,配置完全相同。我面临的问题是,当 WPF 客户端使用我的个人 ngrok 帐户开始与 SignalR 的连接时,一切都很完美。但是当我更改 URL 以使用客户端 ngrok 帐户时,SignalR 无法启动连接并出现以下错误...
System.Net.Http.HttpRequestException:发送时出错 请求。 ---> System.Net.WebException:请求被中止: 无法创建 SSL/TLS 安全通道。在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) --- 内部异常堆栈跟踪结束 ---
我在网上搜索并尝试了许多建议(不仅针对 SignalR,而且通常是“无法创建 SSL/TLS 安全通道”错误),但没有任何效果。 IE。在我的主机 Startup.cs ...
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback +=(发件人, 证书,链,sslPolicyErrors) => true;
两个 URL 都使用 https 并具有由 R3 颁发给 ngrok 的有效通配符证书。 SignalR 主机也是一个网站。使用任一 URL,网站都会响应并提供页面,并且锁定图标在浏览器的 URL 地址栏中可见(我使用 Chrome)。
所以我不知道为什么当我使用我的客户 ngrok URL 时 SignalR 会失败,但我的个人 URL 却可以正常工作。有人可以帮忙吗?将不胜感激。
【问题讨论】: