我开始使用unity将东西注入我的一个集线器中。这有效,但是,当我在我的集线器之外的某个地方解决hubcontext时,我似乎得到了错误的一个。这是因为当我尝试使用它发送消息时,连接的客户端无法获取它们。
Dependencyresolver:
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>();
还有什么需要注册吗?
答案 0 :(得分:2)