我有一个基于 ASP.NET MVC 4 插件的 webapp,其插件包含一个侦听器类,在后台运行以侦听 SQL Server Broker 队列上的消息。当新消息到达时,我想将它们推送给所有连接的客户端。
我创建了一个通知中心,它在从客户端发送到服务器时运行良好,但是我用来向客户端发送更新的代码没有做任何事情。
var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
context.Clients.All.dataUpdated(message.Data);
我试过使用
using (var timerScope = AutofacDependencyResolver.Current.ApplicationContainer.BeginLifetimeScope("httpRequest"))
{
var connMgr = timerScope.Resolve<IConnectionManager>();
var context = connMgr.GetHubContext<NotificationHub>();
context.Clients.All.dataUpdated(message.Data);
}
但随后我只收到带有错误消息的 InvalidOperationException:“无法创建请求生命周期范围,因为 HttpContext 不可用。”
可以理解,因为我试图在网络请求之外进行呼叫。
我正在尝试做的事情有可能吗?我已经看到了一些使用 webrequest 连接到自身以发送消息的示例,但我正在寻找一种更清洁的方式,我真的不想使用完整的消息总线。