2013-03-19 24 views
9

Sono API Web ASP.NET e SignalR self-hosting utilizzando OWIN. Avvio il server (su un'app console) con questo codice:Passare un parametro all'host OWIN

using (WebApplication.Start<Startup>(url)) 
{ 
    Console.WriteLine("Running..."); 
    Console.ReadLine(); 
} 

Questo funziona correttamente. Ma ora ho bisogno di passare un parametro (un oggetto) alla classe Startup. Come si può fare?

risposta

9

Il metodo WebApplication.Start ha un sovraccarico che accetta un parametro IServiceProvider, pertanto è possibile iniettare i dati desiderati.

IServiceProvider serviceProvider = DefaultServices.Create(defaultServiceProvider => 
{ 
    defaultServiceProvider.AddInstance<IMyInterface>(myInstance); 
}); 

using (WebApplication.Start<Startup>(serviceProvider, url)){ ... } 

Ora, sulla mia classe Startup ho solo bisogno di creare un costruttore che riceve l'IMyInterface:

public Startup(IMyInterface myInstance) 
{ 
    ... 
} 
+3

Questo non sembra funzionare con API Web 2 – Steven

Problemi correlati