Unity を使用してハブの 1 つにデータを注入し始めました。これは機能しますが、ハブの外側のどこかでハブコンテキストを解決すると、間違ったものを取得しているように見えます。これは、メッセージを送信しようとすると、接続されているクライアントがメッセージを取得できないためです。
依存関係リゾルバー:
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>();
他に登録が必要なものはありますか?