【发布时间】:2020-07-07 11:47:12
【问题描述】:
我有一个标准的 Web 窗体应用程序,其中包括一个用于 JavaScript 客户端的 SignalR 集线器。集线器本身工作正常,消息按预期发送和接收。
当应用程序终止时(通常通过应用程序池回收),我想向所有连接的 SignalR 客户端发送特定消息。 所以我像这样连接到 Global.asax 的 Application_End:
void Application_End(object sender, EventArgs e)
{
var hubNotifyTask = Task.Factory.StartNew(() =>
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<SiteMasterJsClientHub>();
context.Clients.Group("Group with all users").OnServerStartup("any message");
});
}
嗯……这行不通。如果我将代码放在 Application_End 之外,它会起作用并且客户端会收到消息。 我的猜测是 SignalR 会自动检测应用程序关闭并终止所有连接。不过,我还没有找到任何文档来验证这一点。
所以我的问题是:如何在应用程序关闭之前发送自动 SignalR 消息?
【问题讨论】:
-
你添加了RouteTable.Routes.MapHubs();到你的 Application_Start?
-
我的路由配置看起来不同;但一般的集线器是有效的。我将 if 用于其他可以正常工作的事情。只是应用程序结束消息不起作用。
-
好的,然后在
camelCasing尝试这个方法sendNotificationWeekly()。 -
请在中心类
SiteMasterJsClientHub分享你的方法OnServerStartup -
正如我之前所说:代码在 Application_End 之外工作。我可以手动调用 OnServerStartup,客户端会收到消息并为其执行代码。
标签: asp.net signalr exit signalr-hub