当我们的项目运行.net 4.0时,我安装了SignalR包。我们已升级到4.5,我想支持WebSockets。我卸载了Signal包并重新安装了SignalR(per this answer)。但是,SignalR DLL版本(1.1.0 / 1.1.3)在两种情况下都是相同的。
这是我的配置:
即使我有所有这些必需的东西,我仍然得到这个:
{ “URL”: “/ signalr”, “ConnectionToken”: “Yy6qHcSMMm4vPl9i3ungxJ5aa2P0SJh4UoU4pelAyFcMud0596UaeB6x8AmhZ2SxW_MPk23QXrKGkwar7LjLLnWlBZx1nokd6LRe96k8D-Oua3kSnKsyDa1RrPTE0n9FyaUO9rK3caLfue20Dmx5UkB9F2TKusPD4PDqQw2”, “的ConnectionId”: “b7b00e98-3128-4fbb-ba63-fb16f922f168”, “的KeepAliveTimeout”:20.0, “DisconnectTimeout”:30.0 “TryWebSockets”:假 “WebSocketServerUrl”:NULL, “ProtocolVersion”: “1.2”}
我猜重要的部分是:
"TryWebSockets":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.2"
这是否意味着我没有使用WebSockets?我能错过什么?
非常感谢。
答案 0 :(得分:4)
SignalR的所有主要版本都支持WebSockets。
因此问题是“我的SignalR应用程序使用WebSockets需要什么?”
现在我们已经确定了启用WebSocket的应用程序所需的内容,似乎您错过了WebSockets功能的启用。
要在服务器上启用WebSockets,请按照“分步说明”here进行操作。
希望这有帮助!
答案 1 :(得分:1)
我知道你的问题 - 就像我们的问题一样!
您的问题是您正在运行的客户端。
客户端 Windows堆栈必须是> Windows7上使用WebSockets .Net客户端
这也抓住了我们! 浏览器不受影响,因为它们有自己的WebSocket堆栈,但Windows .Net网络堆栈没有WebSockets。 Windows 8 / Windows 2012和IIS 8修复了这个问题。 这就是为什么SignalR负载测试仪(曲柄)在Windows7上运行时不能使用WebSockets,仅在Windows 2012中运行(无论服务器如何)
答案 2 :(得分:0)
我们已升级到4.5,我想支持WebSockets。 我正在运行Windows 2012 Server,IIS 8,WebSockets功能安装在服务器上,我仍然得到这个
由于您使用的是ASP.NET 4.5,IIS 8和Windows Server 2012,因此问题应该依赖于您将项目迁移到.NET Framework 4.5或使用浏览器的方式。鉴于大多数现代Web浏览器都支持Web套接字,我非常怀疑您的引用仍然适用于.NET framework 4.0。
尝试使用.NET框架创建一个新项目4.5。简单地使用项目属性设置目标有时不会更新程序集。