我正在使用 SignalR 1.1 测试版。我的控制器代码如下
_signalUrl = "https://localhost/signalr";
_hubConnection = new HubConnection(_signalUrl);
_proxy = _hubConnection.CreateHubProxy("MyHub");
_hubConnection.Start().Wait(); // throws error
以下是错误详情
InnerException {“底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。”} System.Exception {System.Net.WebException}
InnerException {“根据验证程序,远程证书无效。”} System.Exception {System.Security.Authentication.AuthenticationException}
在 System.Threading.Tasks.Task.Wait 的 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 的堆栈跟踪(Int32 毫秒超时,CancellationToken 取消令牌)在 System.Threading.Tasks.Task.Wait()。
当使用证书部署到服务器时,使用域名 ( https://domainname.com/signalr
) 可以正常工作。但不是 IP 地址 ( https://IPAddress/signalr
)。
还尝试通过以下代码添加客户端证书。
_proxy = _hubConnection.CreateHubProxy("MyHub");
X509Certificate certificate = X509Certificate.CreateFromCertFile("MyCert.cer");
_hubConnection.Start(new MyHttpClient() { Certificate = certificate }).Wait();
如何在启动集线器连接之前配置自定义客户端证书?
任何想法,在此先感谢。
普拉文