SignalR 挂起开始连接
Posted
技术标签:
【中文标题】SignalR 挂起开始连接【英文标题】:SignalR pending start connection 【发布时间】:2019-03-02 15:15:25 【问题描述】:我正在实现 SignalR 库,以便在 ASP.NET MVC 应用程序中的一种“队列”中使用 websocket。
当只有两个用户时,一切都按预期工作。当第三个人登录(我的意思是,我打开一个新标签页)时,他的 SignalR 启动请求处于等待状态,其他用户无法再使用应用程序。
所有浏览器都会发生这种情况:如果我打开 3 个 Chrome 选项卡,或 3 个 Firefox,或 2 个 Chrome 或 1 个 Firefox,或 2 个 Firefox 和 1 个 Chrome。它会永远挂起。
我的代码与为 SignalR 教程提供的代码相同:“SignalR 2 和 MVC 5 入门”。
谁能解决这个问题?我开始认为这是 IIS 限制,但我不是 100% 确定。我正在使用最后一个 SignalR 版本(2.3.0),4.6.1 ASP 版本(我已经在 IIS 配置中启用了 WebSockets)。
我发现了一个类似的问题 (SignalR start pending),但似乎没有给出答案。
javascript(客户端)代码:
var attendHub = $.connection.attendHub;
// Create a function that the hub can call back
attendHub.client.reloadGrid = function (sr)
// Business logic
;
$.connection.hub.start();
服务器集线器 (C#) 代码:
public class AttendHub : Hub
private static readonly IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<AttendHub>();
public static void RefreshAttendList(int branchId)
// Business logic
///...
hubContext.Clients.All.ReloadGrid(sr);
我正在从控制器调用 RefreshAttendList 方法,执行这一行:
AttendHub.RefreshAttendList(AppInfo.ActiveUser.BranchId);
我做错了什么?
【问题讨论】:
【参考方案1】:好吧,我发现这是一个本地 IIS 限制,因为我将配置更改为使用 IIS Express 而不是本地,它的工作就像一个魅力!
希望这对遇到同样问题的人有所帮助!
【讨论】:
以上是关于SignalR 挂起开始连接的主要内容,如果未能解决你的问题,请参考以下文章
C# SignalR 异常 - 在收到调用结果之前连接开始重新连接