Verwenden eines vorhandenen IoC-Containers in SignalR 2.0

Wie kann ich eine vorhandene IoC mit SignalR 2.0 verwenden?

Aus dem Tutorial geht hervor, dass ich eine Klasse einrichten muss, die von OWIN über ein Attribut aufgerufen werden soll:

using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
    public class Startup
    {
        public void Configuration(IAppBuilder app /*HOW AM I GONNA GET UNITY CONTAINER HERE?*/) 
        {
            var hubConfig = new HubConfiguration()
            {
                EnableJSONP = true,
                EnableDetailedErrors = true,
                EnableJavaScriptProxies = true,
                Resolver = new SignalRUnityDependencyResolver(container)  
            };


            // Any connection or hub wire up and configuration should go here
            app.MapSignalR(hubConfig);
        }
    }
}

Das Problem hierbei ist, dass ich bereits einen Container habe, der vom Systemstart getrennt ist, und dass der Container Singleton-Instanzen enthält, die für die MVC-App freigegeben werden müssen, die unter demselben Host freigegeben ist.

Das Problem hierbei ist jedoch, dass es anders als zuvor nicht so aussieht, als könnte ich die anrufenMapSignalR Methode aus meinem eigenen Code. Vielmehr muss ich mich darauf verlassen, dass OWIN dies für mich erledigt. Allerdings ist OWIN nicht bekannt, welchen Container ich bereits eingerichtet habe.

Wie lässt sich das am besten beheben? Ich habe einige sehr grobe Ideen, wie man eine Lösung mithilfe von statischen Variablen hackt, um einige davon zu speichern - aber ich hasse den Gedanken daran. Der Code wird spröde, und die Reihenfolge der Ausführung kann leicht zu einem subtilen Fehler führen.

Gibt es eine Möglichkeit, die IAppBuilder-Instanz zu halten, ohne dass OWIN die obige Methode aufruft? Auf diese Weise kann ich besser steuern, wann SignalR initialisiert wird, und ich kann meinen eigenen IoC in die Konfiguration übernehmen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage