我有一个基于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连接到自己发送消息的例子,但我正在寻找一种更清洁的方式,而且我真的不想去完全成熟的消息总线。