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