我开始使用统一将东西注入我的一个集线器。这可行,但是,当我在集线器之外的某个地方解析集线器上下文时,似乎我弄错了。这是因为当我尝试用它发送消息时,连接的客户端没有收到它们。
依赖解析器:
public class SignalRUnityDependencyResolver : DefaultDependencyResolver, IDependencyResolver
{
private IUnityContainer _container;
public SignalRUnityDependencyResolver(IUnityContainer container)
{
_container = container;
}
public override object GetService(Type serviceType)
{
if (_container.IsRegistered(serviceType)) return _container.Resolve(serviceType);
else return base.GetService(serviceType);
}
public override IEnumerable<object> GetServices(Type serviceType)
{
if (_container.IsRegistered(serviceType)) return _container.ResolveAll(serviceType);
else return base.GetServices(serviceType);
}
}
我在容器中注册的内容:
container.RegisterType<MessageHub>(new InjectionConstructor(new EFAuthRepository()));
我的枢纽:
public class MessageHub : Hub
{
IAuthRepository _repository;
public MessageHub(IAuthRepository repository)
{
_repository = repository;
}
我如何在中心之外解决:
var context = GlobalHost.ConnectionManager.GetHubContext<MessageHub>();
还有什么需要注册的吗?