2013-03-19 25 views
9

Ich host ASP.NET Web API und SignalR mit OWIN. Ich starte den Server (auf einer Konsolen-App) mit diesem Code:Übergeben Sie einen Parameter an OWIN-Host

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

Das funktioniert gut. Aber jetzt muss ich einen Parameter (ein Objekt) an die Klasse Startup übergeben. Wie kann das gemacht werden?

Antwort

9

Die WebApplication.Start Methode hat eine Überlast, die einen IServiceProvider als Parameter akzeptiert, so dass es möglich ist, die gewünschten Daten zu injizieren.

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

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

nun auf meine Startup Klasse Ich brauche nur einen Konstruktor zu erstellen, die die IMyInterface erhält:

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

Dies scheint nicht mit Web-API zu arbeiten 2 – Steven

Verwandte Themen