SignalR应用程序启动,在http上运行,但不在https上运行:意外关闭的连接

时间:2018-11-26 15:50:01

标签: c# signalr self-host-webapi

我在使用VS2015 FW 4.6,SignalR 2.3.0构建的Windows服务中有一个自托管的SignalR应用程序。使用IP的端口6286(https)和6287(http)和“ *”可以正常工作超过2年。我想分别将这些端口分别切换为80和443,并将通配符证书应用于443。由于存在使用IP 192.168.100.7上的证书的网站,因此我向服务器添加了另一个IP地址(192.168.100.3),以应用证书与:

netsh http add sslcert ipport=192.168.100.3:443 appid={12345678-db90-4b66-8b01-88f7af2e36bf} certhash=xxxxxxxxxxxxxxxxxxxxxxxxx

我可以通过以下方式验证成功

netsh http show sslcert ipport=192.168.100.3:443

因此,我使用以下内容启动WebApp:

SignalR = WebApp.Start("http://192.168.100.3:80/");
SignalRSSL = WebApp.Start("https://192.168.100.3:443/");

它们似乎可以正常启动,没有错误,如果我使用http://192.168.100.3/signalr/hubs,则可以正常运行。但是,https://192.168.100.3:443/signalr/hubs给出“意外关闭的连接”错误。

我做错了什么,还需要为https设置其他内容吗?

1 个答案:

答案 0 :(得分:0)

我的错误...我正在使用内部IP和相应的外部IP进行测试。我意识到通配符证书不绑定到IP,而是绑定到域!因此,我为具有通配符域的IP创建了A记录,并且该记录有效。

但是,我现在有一个不同的问题,那就是它试图与Web服务器的域进行协商,而不是与signalR域进行协商来发送消息!

https://webserverdomain/signalr/negotiate?clientProtocol=1.5....  

我不知道它在哪里提取Web服务器的名称,但是它与众不同,可能是另一篇文章的主题。