如何在Azure移动服务中注入IHubContext

时间:2015-01-15 15:51:37

标签: signalr autofac azure-mobile-services

要从集线器外部获取IHubContext,我使用:

public class EventSender
{
   private readonly IHubContext context;

   public EventSender(ApiServices services)
   {
       context = services.GetRealtime<MyHub>();
   }

   public void Send(string message)
   {
       context.Clients.All.Send(message);
   }
}

其中services是注入调用类的ApiServices实例。 如果我想注入IHubContext本身怎么办?我怎么做? 我试图在IHubContext中注册WebApiConfig.cs实例,如下所示:

var configBuilder = new ConfigBuilder(options, (httpConfig, autofac) =>
{
    autofac.RegisterType<Logger>().As<ILogger>().SingleInstance();
    autofac.RegisterInstance(??).As<IHubContext>(); <-- ????
    ....

但这有两个问题:

  1. 我无法访问ApiServices个实例(WebApiConfig类是静态的,所以我无法将其注入其中。)
  2. 我将其注册为什么类型? IHubContext似乎过于笼统。

1 个答案:

答案 0 :(得分:1)

如果您可以注入ApiServices,则可以在尝试注册依赖项时拥有访问权限。

你能尝试这样的事吗?

autofac.Register(c => 
  {
    var services = c.Resolve<ApiServices>();
    return services.GetRealtime<MyHub>();
  }.As<IHubContext>();

在你的构造函数中:

public EventSender(IHubContext context)
{
  this.context = context;
}