0

我有一个基于 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 连接到自身以发送消息的示例,但我正在寻找一种更清洁的方式,我真的不想使用完整的消息总线。

4

0 回答 0