将参数传递给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)
{
...
}
答
可以使用WebApp.Start Method (String, Action<IAppBuilder>)
overload。
例子:
using (WebApplication.Start(url, appBuilder => new Startup(myObject).Configuration(appBuilder)))
{
Console.WriteLine("Running...");
Console.ReadLine();
}
这似乎并不在Web API 2工作 – Steven 2016-05-05 21:12:22