2013-03-19 60 views
9

我使用OWIN自承載ASP.NET Web API和SignalR。我使用此代碼啓動服務器(在控制檯應用程序):將參數傳遞給OWIN主機

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

這工作得很好。但是現在我需要將一個參數(一個對象)傳遞給Startup類。如何才能做到這一點?

回答

9

WebApplication.Start方法有一個過載,接受IServiceProvider作爲參數,所以可以注入我想要的數據。

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

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

現在,我Startup類我只需要創建一個接收IMyInterface的一個構造函數:

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

這似乎並不在Web API 2工作 – Steven 2016-05-05 21:12:22