Verwenden von Unity IoC zum Registrieren und Auflösen von SignalR-Hubs

8

Ich denke, dass ich etwas sehr einfaches verpasse und vielleicht nur ein neues Paar Augen brauche. Ich habe eine ASP.NET MVC-Anwendung. In dieser App verwende ich Unity für meinen IoC, um die Abhängigkeitsinjektion zu verarbeiten. Für jedes meiner Repositorys muss eine Datenbankfactory eingefügt werden, und in jede Datenbankfactory muss ein Prinzipal injiziert werden. Bis jetzt habe ich den PerRequestLifetimeManager benutzt, um diese zu registrieren.

%Vor%

Logischerweise habe ich versucht, meinen Hub auf die gleiche Weise zu registrieren.

%Vor%

Wenn ich jedoch meine App starte und von meiner Chat-Seite weg navigiere, erhalte ich die Ausnahme "Auflösung der Abhängigkeit" und die InnerException sagt mir: "Die Operation ist aufgrund des aktuellen Status des Objekts nicht gültig." Ich habe auch versucht, die Standard (Transient), PerResolve und ContainerControlled Lifetime Unity Manager zu verwenden, wenn ich diese Leute registriere und mein Problem nicht lösen kann.

Könnte jemand mir einfach einen Demo-Code mit der Verwendung von Unity in einer ASP.NET MVC-Anwendung zur Verfügung stellen, um die Abhängigkeitsinjektion in Ihre Signal-Hubs zu behandeln?

Hier wird Unity Parameter in meinen SignalR Hub eingeben

%Vor%

Danke!

    
KWondra 05.01.2014, 02:02
quelle

2 Antworten

12

Mach es in drei Schritten

Erstens. Erstellen Sie die UnityHubActivator-Klasse

%Vor%

Sekunde. Erstellen Sie den Unity-Container und registrieren Sie Ihren Abhängigkeits-Resolver, bevor Sie die Startup-Klasse ausführen.

%Vor%

Drittens. Benutze es in deinem Hub

%Vor%

Hinweis. Ich ändere nichts in meiner Startup-Klasse

    
Marat Batalandabad 17.06.2015 09:29
quelle
1

Dafür gibt es einen Trick. Sie müssen so etwas tun:

%Vor%

und erstellen Sie dann eine private Methode CreateChatHub

%Vor%     
Gang Gao 05.01.2014 02:13
quelle