SignalR 2.2和ARR3.0负载平衡

我正在使用signalr2.2 web应用程序并在IIS-8中进行托管。 在这里我尝试使用ARR3.0为我的应用程序实现负载平衡。 在我的服务器场中,我连接了两台服务器,并将路由规则设置为“加权循环”。 每个服务器都有一个带HTML页面的javascript客户端。 虽然我正在访问任何服务器的HTML页面的请求已按预期路由,但我在我的HTML页面有这个错误,信号器没有连接

WebSocket连接到 'WS://mydomain.com/signalr/connect运输=&的WebSockets clientProtocol = 1.5&connectionToken = x9rAfatyMm3TbqzrYKL1K37Z4tKrUTH7bwNmSItW55Z0ms6pe43YiQGFOmaHMyT%2BpmGz62ukt4tha72vPcJhdqLtIvsQvqvY15oYGv69JjzSuuiSL7v2l%2FccZT6tQa3Z&connectionData =%5B%7B%22name%22%3A%22chathub%22%7D%5D&TID = 1'失败:WebSocket握手期间出错:意外的响应代码:400

如果我在我的serverfarm中使这个服务器的任何一个脱机,signalr工作正常,并且不会抛出任何错误。 帮助我找到解决方案。

如果我从我的.net客户端应用程序通信signalr服务器,它将引发以下错误

在启动请求期间出错。 停止连接。


我也有这个问题。 更深入地看,错误是: The connection id is in the incorrect format 。 在Google上搜索一下之后,我读到了某个地方,当运行一个服务器场环境时,这些服务器需要共享相同的机器密钥,这个机器密钥可以在IIS中配置。

为此,请按照下列步骤操作:

  • 打开连接到服务器场中任何服务器的IIS。
  • 在服务器节点中,在右窗格中打开“ 机器密钥”选项
  • 在右侧菜单中,点击生成密钥
  • 取消选中为验证密钥和解密密钥Generate a unique key for each application选项Generate a unique key for each application密钥。
  • 复制生成的两个键(例如,粘贴在记事本中)
  • 确保服务器场中的所有服务器共享相同的密钥(ARR服务器不需要这些密钥),您可能需要重复上述步骤(也许您没有尽快使用共享配置)。
  • 另外,您需要确保每个服务器中的应用程序使用相同的标识。 例如,选择您的应用程序节点(或站点节点,如果是这种情况),在右侧菜单中选择基本设置 ,然后连接为...。 如果选择的选项是Application用户,那么你需要检查你的应用程序池是如何配置的。 如果它使用网络服务 (和我的一样),您仍然会遇到问题,因为每个服务器都使用自己的凭据,但您必须确保它们使用相同的身份。

    在我的场景中,我必须创建一个可以访问服务器场中每个服务器的用户,并使该应用程序使用同一用户。 只有这样做后,我的问题才得到解决。

    链接地址: http://www.djcxy.com/p/62231.html

    上一篇: SignalR 2.2 and ARR3.0 Load balancing

    下一篇: Load balancing since Node v0.12.2