Использование Unity IoC для регистрации и разрешения узлов SignalR
Я думаю я'Я упускаю что-то очень простое и, возможно, просто нужно новый набор глаз. У меня есть приложение ASP.NET MVC. В этом приложении я использую Unity для своего IoC для обработки внедрения зависимостей. В каждом из моих репозиториев должна быть введена фабрика баз данных, а в каждую фабрику баз данных должен быть введен принципал. Пока что ямы использовали PerRequestLifetimeManager для их регистрации.
//Repositories
container.RegisterType(new PerRequestLifetimeManager());
container.RegisterType(new PerRequestLifetimeManager());
//Context
container.RegisterType(new PerRequestLifetimeManager());
container.RegisterType(new PerRequestLifetimeManager());
container.RegisterType(new PerRequestLifetimeManager());
По логике вещей, яЯ пытался зарегистрировать мой Hub таким же образом.
container.RegisterType(new PerRequestLifetimeManager());
Однако всякий раз, когда я запускаю свое приложение и покидаю страницу чата, я получаю сообщение "Разрешение зависимости не удалось исключение и InnerException говорит мне "Операция недопустима из-за текущего состояния объекта. «Я»Мы также пытались использовать менеджеры Unity по умолчанию (Transient), PerResolve и ContainerControlled life при регистрации этих парней и, похоже, не смогли решить мою проблему.
Может кто-нибудь просто предоставить мне некоторый демонстрационный код о том, как вы использовали Unity в приложении ASP.NET MVC для обработки внедрения зависимостей в ваши концентраторы сигналов?
Вот'где Unity будет вводить параметры в мой SignalR Hub
public class ChatHub : Hub
{
private readonly ChatMessageRepository _chatMessageRepository;
private readonly SignalRConnectionRepository _signalRConnectionRepository;
private readonly UnitOfWork _unitOfWork;
public ChatHub(ChatMessageRepository chatMessageRepository,
SignalRConnectionRepository signalRConnectionRepository,
UnitOfWork unitOfWork)
{
_chatMessageRepository = chatMessageRepository;
_signalRConnectionRepository = signalRConnectionRepository;
_unitOfWork = unitOfWork;
} ... }
Спасибо!