4

当我们的项目运行 .net 4.0 时,我安装了 SignalR 包。我们已经升级到 4.5,我想支持 WebSockets。我卸载了 Signal 包并重新安装了 SignalR(根据这个答案)。但是,两种情况下的 SignalR DLL 版本 (1.1.0/1.1.3) 是相同的。

这是我的配置:

  1. ASP.NET 4.5
  2. IIS 8.0 (Windows Server 2012)
  3. 服务器上启用了 WebSockets 功能
  4. 支持 WebSocket 的浏览器(最新版 Firefox)

即使我拥有所有这些必需的东西,我仍然得到这个:

{"Url":"/signalr","ConnectionToken":"Yy6qHcSMMm4vPl9i3ungxJ5aa2P0SJh4UoU4pelAyFcMud0596UaeB6x8AmhZ2SxW_MPk23QXrKGkwar7LjLLnWlBZx1nokd6LRe96k8D-Oua3kSnKsyDa1RrPTE0n9FyaUO9rK3caLfue20Dmx5UkB9F2TKusPD4PDqQw2","ConnectionId":"b7b00e98-3128-4fbb-ba63-fb16f922f168","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"TryWebSockets ":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.2"}

我想重要的部分是:

"TryWebSockets":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.2"

这是否意味着我没有使用 WebSockets?我会错过什么?

非常感谢。

4

3 回答 3

4

所有主要版本的 SignalR 都支持 WebSocket。

因此问题是“我的 SignalR 应用程序需要什么才能使用 WebSockets?”

  1. ASP.NET 4.5
  2. IIS 8.0(Windows Server 2012 或 Windows 8)
  3. 服务器上启用了 WebSockets 功能
  4. 一个支持 WebSocket 的浏览器

现在我们已经确定了启用 WebSocket 的应用程序所需的条件,您似乎缺少启用 WebSockets 功能。

要在您的服务器上启用 WebSocket,请遵循此处的“逐步说明” 。

希望这可以帮助!

于 2013-10-14T03:04:33.830 回答
1

我知道你的问题——和我们一样!

您的问题是您正在运行的客户端。

客户端Windows 堆栈必须 > Windows7 才能在 .Net 客户端上使用WebSockets

这也抓住了我们!浏览器不受影响,因为它们有自己的 WebSocket 堆栈,但 Windows .Net 网络堆栈没有 WebSocket。Windows 8/Windows 2012 和 IIS 8 修复了这个问题。这就是为什么 SignalR 负载测试器(曲柄)在 Windows7 上运行时不能使用 WebSocket,只能在 Windows 2012 中使用(无论服务器如何)

于 2014-01-20T12:29:44.653 回答
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 框架 4.0。

尝试使用 .NET 框架作为 4.5 创建一个新项目。简单地使用项目属性设置目标有时不会更新程序集。

于 2013-10-14T05:31:14.560 回答