我正在使用
GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.AppSettings["ConnectionString"]);
为使用signalR(版本2.2.1)的Web应用程序设置SQL背板。 Web应用程序托管在多个服务器上以及生产中的多个站点上。每个站点都有自己的数据库。
这在大多数服务器上都能正常工作(signalR连接和消息在客户端之间按预期流动)。
但是 - 对于某些站点,signalR无法连接,并且fail()回调处理程序(客户端javascript)中存在以下消息:
“无法成功初始化传输。请尝试指定其他传输或根本不进行自动初始化。”
启用客户端日志记录时,会显示signalR无法使用任何协议进行连接。
SignalR:后备传输耗尽。
工作站点和非工作站点之间的唯一区别是数据库连接字符串。在本地(在我的开发机器上)对生产数据库进行调试时,我看到了相同的行为。所以我认为这个问题与db中的SignalR表有关,但是当编写生产数据库脚本并在本地恢复它时,问题就不存在了。除了数据库名称之外,所有网站的连接字符串都相同。
我无法弄清楚为什么signalR不能连接几个站点(30个中的2个) - 唯一的区别是数据库。如果我注释掉/禁用UseSqlServer配置它可以工作,但是然后没有启用同步原因。
欢迎任何有关如何解决此问题的建议。我见过与signalR相关的帖子无法连接,建议的解决方案与global.asax中Application_PreSendRequestHeaders的实现有关。在这种情况下,这似乎不是问题。