本文介绍了无法将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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-16 12:12