本文介绍了无法将DependencyResolver传递到集线器配置中的MapSignalR的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个MVC4应用程序,其中我使用SignalR和一个依赖项注入框架。因此,我需要实现一个自定义的DependencyResolver。为了将其连接起来,我使用
var resolver = new CustomSignalRDependencyResolver(...);
GlobalHost.DependencyResolver = resolver;
app.MapSignalR();
一切都按预期运行。但是,如果我使用如下HubConfiguration对象:
var resolver = new CustomSignalRDependencyResolver(...);
app.MapSignalR(new HubConfiguration(
{
Resolver = resolver
});
所有似乎都正常(对象已正确连接,没有任何错误或警告),但不再调用远程方法。有人能解释一下第一种方法和第二种方法之间的区别吗?
推荐答案
我认为Lars Höppner(在此帖子上留下第一条评论的用户)是对的。
您绝对可以在不更改GlobalHost.DependencyResolver
的情况下使用自定义依赖项解析器(SignalR测试套件经常执行此操作),但您必须确保GlobalHost
不会出现在代码中的任何其他位置。
这意味着绝对不会引用:
- GlobalHost.Configuration
- GlobalHost.ConnectionManager
- GlobalHost.TraceManager
- GlobalHost.HubPipeline
- 当然还有GlobalHost.DependencyResolver
链接到(SignalR: Sending data using GlobalHost.ConnectionManager not working)的SO POST LAR向您展示如何从自定义依赖项解析器获取ConnectionManager;您可以对GlobalHost上的所有其他属性执行相同的操作。
这篇关于无法将DependencyResolver传递到集线器配置中的MapSignalR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!