0

我正在使用 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();

如何在启动集线器连接之前配置自定义客户端证书?

任何想法,在此先感谢。

普拉文

4

1 回答 1

0

将证书添加到集合中。

_hubConnection = new HubConnection(_signalUrl);
_proxy = _hubConnection.CreateHubProxy("MyHub");
_hubConnection.AddClientCertificate(X509Certificate.CreateFromCertFile("MyCert.cer"));
_hubConnection.Start().Wait();
于 2013-04-24T09:02:25.577 回答