Usando o Unity IoC para registrar e resolver hubs do SignalR

Acho que estou perdendo algo muito simples e talvez apenas precise de um novo par de olhos. Eu tenho um aplicativo ASP.NET MVC. Nesse aplicativo, estou usando o Unity no meu IoC para lidar com a injeção de dependência. Cada um dos meus repositórios precisa ter uma fábrica de banco de dados injetada nele e cada fábrica de banco de dados precisa ter um principal injetado nele. Até agora, tenho utilizado o PerRequestLifetimeManager para registrá-los.

//Repositories

container.RegisterType<ChatMessageRepository>(new PerRequestLifetimeManager());
           container.RegisterType<SignalRConnectionRepository>(new PerRequestLifetimeManager());

//Context
container.RegisterType<IPrincipal, Principal>(new PerRequestLifetimeManager());
container.RegisterType<IDatabaseFactory, DatabaseFactory>(new PerRequestLifetimeManager());
container.RegisterType<UnitOfWork>(new PerRequestLifetimeManager());

Logicamente, tentei registrar meu Hub da mesma maneira.

container.RegisterType<ChatHub>(new PerRequestLifetimeManager()); 

No entanto, sempre que executo o aplicativo e saio da página de bate-papo, recebo a exceção "Falha na resolução da dependência" e a InnerException diz "A operação não é válida devido ao estado atual do objeto". Também tentei usar os gerenciadores Unity padrão (Transient), PerResolve e ContainerControlled ao registrar esses caras e parece que não consigo resolver o meu problema.

Alguém poderia me fornecer algum código de demonstração de como você usou o Unity em um aplicativo ASP.NET MVC para lidar com a injeção de dependência em seus hubs de sinal?

Aqui é onde o Unity injeta parâmetros no meu Hub SignalR

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;
    } ... }

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion