我有一个 MVC 4 应用程序,其中使用 SignalR 和依赖项注入框架。因此,我需要实现一个自定义的 DependencyResolver。为了连接它,我正在使用
var resolver = new CustomSignalRDependencyResolver(...);
GlobalHost.DependencyResolver = resolver;
app.MapSignalR();
一切都按预期进行。但是,如果我使用像这样的 HubConfiguration 对象:
var resolver = new CustomSignalRDependencyResolver(...);
app.MapSignalR(new HubConfiguration(
{
Resolver = resolver
});
一切seems可以工作(对象已正确连接,没有任何错误或警告),但不再调用远程方法。有人可以解释第一种方法和第二种方法之间的区别吗?
我认为 Lars Höppner(在这篇文章中留下第一条评论的用户)是正确的。
您绝对可以使用自定义依赖解析器而无需更改GlobalHost.DependencyResolver
(SignalR 测试套件经常这样做),但你必须确定GlobalHost
不会出现在代码中的其他任何地方。
这意味着绝对没有引用:
- 全局主机配置
- GlobalHost.ConnectionManager
- GlobalHost.TraceManager
- GlobalHost.HubPipeline
- 当然还有 GlobalHost.DependencyResolver
Lars 链接到的 SO 帖子 (SignalR:使用 GlobalHost.ConnectionManager 发送数据不起作用 https://stackoverflow.com/questions/20139127/signalr-sending-data-using-globalhost-connectionmanager-not-working/20202040#20202040) 向您展示如何从自定义依赖项解析器获取 ConnectionManager;您可以对 GlobalHost 上的所有其他属性执行相同的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)