如何在MVC 5应用程序中配置Autofac和SignalR

约翰

我正在尝试配置MVC 5应用程序以使用SignalR 2.2.x并将服务注入到我的NotificationsHub我们正在将Autofac用于MVC,但是我不确定如何正确配置它。存在NuGetAutofac.Integration.SignalR (3.0.2)和的Autofac文档Autofac.Integration.Mvc (3.3.4)

到目前为止,我正在通过以下方式注册集线器:

ContainerBuilder builder = new ContainerBuilder();

// Register MVC controllers.
builder.RegisterControllers(typeof(MvcApplication).Assembly);

builder.RegisterType<ServiceForSignalRHub>().AsImplementedInterfaces();
builder.RegisterType<...>().AsImplementedInterfaces();

builder.RegisterHubs(Assembly.GetExecutingAssembly());

IContainer container = builder.Build();

DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

但是.SetResolver(...),由于MVC和SignalR集成软件包中都存在对它的调用,因此模棱两可。怎么办?我无法确认服务的构造器注入是否适用于我正在使用的集线器。

编辑

我可以用Autofac配置MVC5。我迷路的是如何使用Autofac Signal集成NuGet对SignalR进行相同的操作。请看下面。

这是我的入门班:

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var defaultFactory = LogManager.Use<DefaultFactory>();
        defaultFactory.Directory("@D:\\NServiceBus\\ );
        defaultFactory.Level(LogLevel.Debug);

        var container = ConfigureAutofac(app);

        ConfigureServiceBus(container, app);

        app.UseAutofacMiddleware(container); // REGISTER WITH OWIN
        app.UseAutofacMvc();

        ConfigureAuth(app);

        GlobalConfiguration.Configuration.UseSqlServerStorage("hangfire");

        ConfigureSignalR(app);
    }
}

这是我配置SignalR的部分:

public partial class Startup
{
    public void ConfigureSignalR(IAppBuilder app)
    {
        var builder = new ContainerBuilder();

        builder.RegisterHubs(Assembly.GetExecutingAssembly()).PropertiesAutowired();
        builder.RegisterType<MaintenanceService>().As<IMaintenanceService>().PropertiesAutowired();

        var container = builder.Build();
        //var container = new AutofacContainer().Container;

        var resolver = new AutofacDependencyResolver(container);

        // Any connection or hub wire up and configuration should go here
        app.MapSignalR(new HubConfiguration
        {
            Resolver = resolver,
            EnableJSONP = true,
            EnableDetailedErrors = true,
            EnableJavaScriptProxies = true
        });

        builder.RegisterInstance(resolver.Resolve<IConnectionManager>());
    }
}

如何正确地做到这一点?

拉杜马蒂

您应该明确告诉SignalRAutofacDependencyResolver在映射它时使用我假设您知道Startup您必须课堂上打电话app.MapSignalR();

映射它时,应该告诉它使用自定义依赖项解析器(AutofacDependencyResolver)。

这是我的方法:

var resolver = new AutofacDependencyResolver(container);

app.MapSignalR(new HubConfiguration
{
    Resolver = resolver
});

这样,您就直接告诉SignalR使用哪个依赖解析器。

我有一个用于SignalR Dependency InjectionGitHub存储库,但未配置为使用MVC。不过,我认为这将为您提供有关如何创建配置的提示。

注意:如果使用的是OWIN中间件,请确保不要使用GlobalHost静态属性AT ALL,因为它会产生巨大的不一致。

OWIN集成中的一个常见错误是使用GlobalHost。在OWIN中,您可以从头开始创建配置。使用OWIN集成时,不应在任何地方引用GlobalHost。

再次,检查我给您的仓库,以了解如何执行此操作。

希望对您有所帮助:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在带有WebAPI,WCF,SignalR和后台任务的MVC Web应用程序中配置简单的注射器容器和救生衣

来自分类Dev

在MVC 5应用程序中使用autofac注入SignalR集线器的依赖项

来自分类Dev

如何在MVC 5应用程序中实现OWIN和Katana

来自分类Dev

如何在MVC应用程序中处理应用程序池配置

来自分类Dev

如何在MVC 5 / Web API 2.0应用程序中为Unity依赖项注入和实体框架配置自动映射器?

来自分类Dev

如何在混合的Web API和MVC应用程序中使用Autofac解析Web API控制器?

来自分类Dev

使用Autofac在MVC5应用程序中解析IOwinContext

来自分类Dev

如何在WebForms应用程序中启用MVC支架?

来自分类Dev

如何在Spring MVC应用程序中测试Aspect

来自分类Dev

如何在午夜在MVC应用程序中刷新数据?

来自分类Dev

Autofac:MVC应用程序中的InstancePerRequest和InstancePerLifetimeScope有什么区别

来自分类Dev

Autofac:MVC应用程序中的InstancePerRequest和InstancePerLifetimeScope有什么区别

来自分类Dev

如何在MVC 5(Visual Studio 2013)中创建Android应用程序?

来自分类Dev

如何在MVC应用程序和控制台应用程序之间共享信息

来自分类Dev

如何在Spring Boot应用程序中配置HikariCP和Dropwizard / Coda-Hale指标

来自分类Dev

如何在单个Java应用程序中配置RAMJobStore和JDBCJobStore

来自分类Dev

如何在Spring Boot应用程序中配置PageableHandlerMethodArgumentResolver

来自分类Dev

如何在extjs应用程序中配置可扩展

来自分类Dev

如何在Appium中配置应用程序的URL?

来自分类Dev

如何在整个应用程序中访问配置对象?

来自分类Dev

如何在我的应用程序中配置地图?

来自分类Dev

如何在codeigniter应用程序中配置SMTP?

来自分类Dev

如何在 KDE 中配置应用程序菜单?

来自分类Dev

如何在Java配置文件(不是XML)中启用Spring MVC应用程序支持的异步

来自分类Dev

如何在没有 spring boot 和 springrest 的情况下将 Jersey 集成到 spring 5 mvc 应用程序中

来自分类Dev

如何在管理MVC 4应用程序中重用模型和视图以进行添加和编辑

来自分类Dev

如何在MVC应用程序中使用TypeScript

来自分类Dev

如何在MVC设计的应用程序中使用SQLAlchemy?

来自分类Dev

如何在MVC应用程序上运行方法?

Related 相关文章

  1. 1

    如何在带有WebAPI,WCF,SignalR和后台任务的MVC Web应用程序中配置简单的注射器容器和救生衣

  2. 2

    在MVC 5应用程序中使用autofac注入SignalR集线器的依赖项

  3. 3

    如何在MVC 5应用程序中实现OWIN和Katana

  4. 4

    如何在MVC应用程序中处理应用程序池配置

  5. 5

    如何在MVC 5 / Web API 2.0应用程序中为Unity依赖项注入和实体框架配置自动映射器?

  6. 6

    如何在混合的Web API和MVC应用程序中使用Autofac解析Web API控制器?

  7. 7

    使用Autofac在MVC5应用程序中解析IOwinContext

  8. 8

    如何在WebForms应用程序中启用MVC支架?

  9. 9

    如何在Spring MVC应用程序中测试Aspect

  10. 10

    如何在午夜在MVC应用程序中刷新数据?

  11. 11

    Autofac:MVC应用程序中的InstancePerRequest和InstancePerLifetimeScope有什么区别

  12. 12

    Autofac:MVC应用程序中的InstancePerRequest和InstancePerLifetimeScope有什么区别

  13. 13

    如何在MVC 5(Visual Studio 2013)中创建Android应用程序?

  14. 14

    如何在MVC应用程序和控制台应用程序之间共享信息

  15. 15

    如何在Spring Boot应用程序中配置HikariCP和Dropwizard / Coda-Hale指标

  16. 16

    如何在单个Java应用程序中配置RAMJobStore和JDBCJobStore

  17. 17

    如何在Spring Boot应用程序中配置PageableHandlerMethodArgumentResolver

  18. 18

    如何在extjs应用程序中配置可扩展

  19. 19

    如何在Appium中配置应用程序的URL?

  20. 20

    如何在整个应用程序中访问配置对象?

  21. 21

    如何在我的应用程序中配置地图?

  22. 22

    如何在codeigniter应用程序中配置SMTP?

  23. 23

    如何在 KDE 中配置应用程序菜单?

  24. 24

    如何在Java配置文件(不是XML)中启用Spring MVC应用程序支持的异步

  25. 25

    如何在没有 spring boot 和 springrest 的情况下将 Jersey 集成到 spring 5 mvc 应用程序中

  26. 26

    如何在管理MVC 4应用程序中重用模型和视图以进行添加和编辑

  27. 27

    如何在MVC应用程序中使用TypeScript

  28. 28

    如何在MVC设计的应用程序中使用SQLAlchemy?

  29. 29

    如何在MVC应用程序上运行方法?

热门标签

归档