【发布时间】:2016-01-08 18:59:30
【问题描述】:
我在 MVC 应用程序中测试 SignalR 时遇到问题。下面发布的代码一切正常,但我发现如果我的 localhost 应用程序出现错误(某些逻辑失败并引发异常),我必须停止调试,修复问题,然后重新构建项目以再次调试web 应用程序,但是在我第二次调试页面后,页面永远不会加载,它只是出现在选项卡上的旋转加载图标,并且永远不会完成页面加载。所以我需要关闭项目并重新打开它。这是代码:
public ActionResult Save()
{
//Some code and then calling the hub
var context = GlobalHost.ConnectionManager.GetHubContext<UpdatesHub>();
context.Clients.All.updateUsers();
return RedirectToAction("Index", "Home");
}
我的中心是这样的:
[HubName("updateHub")]
public class UpdatesHub : Hub
{
public void UpdatedUsers()
{
Clients.All.updateUsers();
}
}
还有 javascript:
$(function () {
var hub = $.connection.updateHub;
//THe method called from MVC for real time update table
hub.client.updateUsers= function () {
$.ajax({
url: "@Url.Action("GetUsers", "Home")",
type: "GET",
cache: false,
success: function (result) {
$("#UserList").html(result);
}
});
}
$.connection.hub.start();
});
我的理论是,当我停止调试来自集线器的 SignalR 连接时,我已经打开的集线器在我第二次调试时从未关闭,并且 IIS 服务器无法处理许多连接?我不知道。我在github上找到了这个:
https://github.com/SignalR/SignalR/issues/3493 但没有人参与这些问题,最后一个版本已经发布了 1 年。
有没有办法在停止调试或 Global.Asax 上的 Application_Start() 等特定事件后停止从集线器创建的连接?因为如果我每次编写一些代码时都必须使用 signalR,我将不得不关闭并重新打开项目。我不知道这个问题是否会影响生产服务器。
【问题讨论】:
标签: c# asp.net-mvc signalr signalr-hub