如何在 Azure 移动服务中注入 IHubContext
How to inject IHubContext in 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
实例,它被注入到调用 class 中。
如果我想注入 IHubContext
本身怎么办?我怎么做?
我试图在 WebApiConfig.cs
中注册 IHubContext
实例,如下所示:
var configBuilder = new ConfigBuilder(options, (httpConfig, autofac) =>
{
autofac.RegisterType<Logger>().As<ILogger>().SingleInstance();
autofac.RegisterInstance(??).As<IHubContext>(); <-- ????
....
但这有两个问题:
- 我无权访问
ApiServices
实例(并且 WebApiConfig
class 是静态的,因此我无法将其注入到那里)。
- 我将其注册为什么类型?
IHubContext
好像太笼统了。
如果您可以注入 ApiServices,您可以在尝试注册您的依赖项时访问。
你能试试这样的吗?
autofac.Register(c =>
{
var services = c.Resolve<ApiServices>();
return services.GetRealtime<MyHub>();
}.As<IHubContext>();
在你的构造函数中:
public EventSender(IHubContext context)
{
this.context = context;
}
要从集线器外部获取 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
实例,它被注入到调用 class 中。
如果我想注入 IHubContext
本身怎么办?我怎么做?
我试图在 WebApiConfig.cs
中注册 IHubContext
实例,如下所示:
var configBuilder = new ConfigBuilder(options, (httpConfig, autofac) =>
{
autofac.RegisterType<Logger>().As<ILogger>().SingleInstance();
autofac.RegisterInstance(??).As<IHubContext>(); <-- ????
....
但这有两个问题:
- 我无权访问
ApiServices
实例(并且WebApiConfig
class 是静态的,因此我无法将其注入到那里)。 - 我将其注册为什么类型?
IHubContext
好像太笼统了。
如果您可以注入 ApiServices,您可以在尝试注册您的依赖项时访问。
你能试试这样的吗?
autofac.Register(c =>
{
var services = c.Resolve<ApiServices>();
return services.GetRealtime<MyHub>();
}.As<IHubContext>();
在你的构造函数中:
public EventSender(IHubContext context)
{
this.context = context;
}