我有一个MVC 4应用程序,我正在使用SignalR和依赖注入框架.因此,我需要实现自定义DependencyResolver.为了连线,我正在使用
var resolver = new CustomSignalRDependencyResolver(...); GlobalHost.DependencyResolver = resolver; app.MapSignalR();
一切都按预期工作.但是,如果我使用这样的HubConfiguration对象:
var resolver = new CustomSignalRDependencyResolver(...); app.MapSignalR(new HubConfiguration( { Resolver = resolver });
一切似乎都有效(对象正确连线,没有任何错误或警告)但远程方法不再被调用.有人可以解释第一种和第二种方法之间的区别吗?
我认为LarsHöppner(在这篇文章中留下第一条评论的用户)是对的.
您绝对可以使用自定义依赖项解析器而不需要更改GlobalHost.DependencyResolver
(SignalR测试套件经常这样做),但您必须确保GlobalHost
不会出现在代码中的任何其他位置.
这意味着绝对没有引用:
GlobalHost.Configuration
GlobalHost.ConnectionManager
GlobalHost.TraceManager
GlobalHost.HubPipeline
当然还有GlobalHost.DependencyResolver
链接到的So post Lars(SignalR:使用GlobalHost.ConnectionManager发送数据不起作用)向您展示如何从自定义依赖项解析器获取ConnectionManager; 你可以为GlobalHost上的所有其他属性做同样的事情.