OWIN + SignalR + Autofac

黑色的

摘自:http : //docs.autofac.org/en/latest/integration/signalr.html

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

听起来很合理。但是,应该如何IHubContext像通常的(非OWIN)一样从ApiController解析

GlobalHost.ConnectionManager.GetHubContext<MyHub>()

我在任何地方都找不到此引用,而现在唯一的方法是HubConfiguration在同一容器中注册实例并执行以下操作:

public MyApiController : ApiController {
  public HubConfiguration HubConfig { get; set; } // Dependency injected by
                                                  // PropertiesAutowired()

  public IHubContext MyHubContext { 
    get { 
      return HubConfig
        .Resolver
        .Resolve<IConnectionManager>()
        .GetHubContext<MyHub>(); 
     } 
  }

  // ...

}

但是,这对我来说似乎很冗长。正确的做法是什么?更具体地说,有一种干净的注册方法IConnectionManager吗?

编辑:

我最终要做的是这样的:

var container = builder.Build();
hubConfig.Resolver = new AutofacDependencyResolver(container); 

app.MapSignalR("/signalr", hubConfig);

var builder2 = new ContainerBuilder();
builder2
  .Register(ctx => hubConfig.Resolver.Resolve<IConnectionManager>())
  .As<IConnectionManager>();

builder2.Update(container);

但我感觉必须有一种更简单的方法将其IConnectionManager注入到控制器中。

詹姆斯·伍德尔

这个答案有点迟了,但是到了。

  • 我建议使用强类型的集线器。
  • 您需要为强类型的集线器添加特定的注册。
  • 我不使用GlobalHost
    • 相反,我使用为OWIN注册创建的配置。

集线器宣言

public interface IMyHub
{
    // Any methods here for strongly-typed hubs
}

[HubName("myHub")]
public class MyHub : Hub<IMyHub>

集线器注册

通过您的Autofac注册

// SignalR Configuration
var signalRConfig = new HubConfiguration();

var builder = // Create your normal AutoFac container here

builder.RegisterType<MyHub>().ExternallyOwned(); // SignalR hub registration

// Register the Hub for DI (THIS IS THE MAGIC LINE)
builder.Register(i => signalRConfig.Resolver.Resolve<IConnectionManager>().GetHubContext<MyHub, IMyHub>()).ExternallyOwned();

// Build the container
var container = builder.Build();

// SignalR Dependency Resolver
signalRConfig.Resolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container);

app.UseAutofacMiddleware(container);
app.MapSignalR("/signalr", signalRConfig);

在后台代码中解决中心

然后,使用AutoFacs AutowiredProperties()扩展方法可以解析正确的上下文(如果需要,也可以位于构造函数中)。

public IHubContext<IMyHub> InstanceHubContext { get; [UsedImplicitly] set; }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Autofac 与 Owin

来自分类Dev

SignalR + Autofac + OWIN:为什么GlobalHost.ConnectionManager.GetHubContext不起作用?

来自分类Dev

Autofac OWIN TestServer和HttpContext

来自分类Dev

使用Autofac的OWIN服务解析

来自分类Dev

SignalR.Owin与SignalR.SelfHost

来自分类Dev

SignalR-OWIN-多个端点

来自分类Dev

Autofac WebApi 2 OWIN无法正常工作

来自分类Dev

Autofac WebApi 2 OWIN无法正常工作

来自分类Dev

Ninject与Web Api,SignalR,MVC和OWIN

来自分类Dev

Owin自带主机上的SignalR Websocket

来自分类Dev

在Owin启动时在InstancePerLifetimeScope中解析Autofac服务

来自分类Dev

如何使用AutoFac和OWIN进行依赖项注入?

来自分类Dev

如何将Autofac与WepApi 2和Owin集成?

来自分类Dev

WebApi 2,OWIN和AutoFac-更改HttpContextBase依赖项

来自分类Dev

Autofac Web API 2和Owin在StartupConfig中解析

来自分类Dev

如何使用Azure Worker Role和OWIN缩放SignalR

来自分类Dev

SignalR 2.0.2和Owin 2.0.0依赖项冲突

来自分类Dev

OWIN使用SignalR并防止“ HTTP错误403.14-禁止”

来自分类Dev

在SignalR中获取OWIN身份验证cookie

来自分类Dev

SignalR Owin Host 2.0.3出现401错误

来自分类Dev

无法使用OWIN Self Host关闭并启动新的SignalR

来自分类Dev

Autofac(+ MVC + EF + SignalR + Hangfire)生命周期范围

来自分类Dev

使用Autofac将SignalR IHubContext注入控制器

来自分类Dev

将SignalR 2.0 Owin管道与SignalR库一起使用

来自分类Dev

依赖项注入不适用于Owin自托管Web Api 2和Autofac

来自分类Dev

在带有混合MVC的AppBuilder.Map块中使用Owin Web API进行Autofac设置

来自分类Dev

了解ASP.NET Webforms,OWIN和ASP.NET Identity的Autofac中间件用法

来自分类Dev

SignalR 2.0错误:无法加载文件或程序集Microsoft.Owin.Security

来自分类Dev

Owin重新启动后,SignalR客户端重新连接,但消息未发布

Related 相关文章

  1. 1

    Autofac 与 Owin

  2. 2

    SignalR + Autofac + OWIN:为什么GlobalHost.ConnectionManager.GetHubContext不起作用?

  3. 3

    Autofac OWIN TestServer和HttpContext

  4. 4

    使用Autofac的OWIN服务解析

  5. 5

    SignalR.Owin与SignalR.SelfHost

  6. 6

    SignalR-OWIN-多个端点

  7. 7

    Autofac WebApi 2 OWIN无法正常工作

  8. 8

    Autofac WebApi 2 OWIN无法正常工作

  9. 9

    Ninject与Web Api,SignalR,MVC和OWIN

  10. 10

    Owin自带主机上的SignalR Websocket

  11. 11

    在Owin启动时在InstancePerLifetimeScope中解析Autofac服务

  12. 12

    如何使用AutoFac和OWIN进行依赖项注入?

  13. 13

    如何将Autofac与WepApi 2和Owin集成?

  14. 14

    WebApi 2,OWIN和AutoFac-更改HttpContextBase依赖项

  15. 15

    Autofac Web API 2和Owin在StartupConfig中解析

  16. 16

    如何使用Azure Worker Role和OWIN缩放SignalR

  17. 17

    SignalR 2.0.2和Owin 2.0.0依赖项冲突

  18. 18

    OWIN使用SignalR并防止“ HTTP错误403.14-禁止”

  19. 19

    在SignalR中获取OWIN身份验证cookie

  20. 20

    SignalR Owin Host 2.0.3出现401错误

  21. 21

    无法使用OWIN Self Host关闭并启动新的SignalR

  22. 22

    Autofac(+ MVC + EF + SignalR + Hangfire)生命周期范围

  23. 23

    使用Autofac将SignalR IHubContext注入控制器

  24. 24

    将SignalR 2.0 Owin管道与SignalR库一起使用

  25. 25

    依赖项注入不适用于Owin自托管Web Api 2和Autofac

  26. 26

    在带有混合MVC的AppBuilder.Map块中使用Owin Web API进行Autofac设置

  27. 27

    了解ASP.NET Webforms,OWIN和ASP.NET Identity的Autofac中间件用法

  28. 28

    SignalR 2.0错误:无法加载文件或程序集Microsoft.Owin.Security

  29. 29

    Owin重新启动后,SignalR客户端重新连接,但消息未发布

热门标签

归档