我正在使用SignalR 1.1 beta。我的控制器代码如下
_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.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 在System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,CancellationToken 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();
如何在启动集线器连接之前配置自定义客户端证书?
任何想法,提前谢谢。
普利文
答案 0 :(得分:0)
将证书添加到集合中。
_hubConnection = new HubConnection(_signalUrl);
_proxy = _hubConnection.CreateHubProxy("MyHub");
_hubConnection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));
_hubConnection.Start().Wait();