将参数传递给OWIN主机

问题描述:

我使用OWIN自承载ASP.NET Web API和SignalR。我使用此代码启动服务器(在控制台应用程序):将参数传递给OWIN主机

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

这工作得很好。但是现在我需要将一个参数(一个对象)传递给Startup类。如何才能做到这一点?

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

可以使用WebApp.Start Method (String, Action<IAppBuilder>) overload

例子:

using (WebApplication.Start(url, appBuilder => new Startup(myObject).Configuration(appBuilder))) 
{ 
    Console.WriteLine("Running..."); 
    Console.ReadLine(); 
}