可以在我的mvc3控制器中调用SignalR的IConnectionManager吗?

时间:2012-03-26 03:03:37

标签: asp.net-mvc-3 dependency-injection signalr

我正在使用MVC3项目,我使用snap结构图进行依赖注入。一切都在原地,除非我开始使用SignalR,我似乎无法实现我的控制器上的DI。我一直在谷歌上搜索关于在SignalR上实现结构图DI的几天,但是还没有找到关于如何做到这一点的强有力的样本。似乎每个使用SignalR的人都在使用Ninject。

我的目标是在调用我的客户端方法之前在我的Hub内部有条件语句(需要我注入服务),但我没有成功。

我不希望这件事延迟我的开发,所以我研究了替代方法,然后我发现我实际上可以使用以下代码从我的控制器调用我的客户端方法:

 IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
 dynamic clients = connectionManager.GetClients<MyHub>();
 clients.myClientScript();

这适合我,但我不确定这是否是一个好方法 - 特别是我正在使用依赖注入。

所以我的问题是:在我的控制器内继续调用它是否可以?你有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:1)

没有理由不能使用SignalR从控制器向连接的客户端发送信息,但是当前客户端不会看到此信息(由于在帖子期间没有连接)。

也就是说,将Structuremap转换为SignalR实际上非常简单。您可以在我的答案中看到具体如何完成此操作:https://stackoverflow.com/a/9866374/701062