参数传递给OWIN主机(Pass a parameter to OWIN host)

2019-08-17 19:04发布

我自托管的ASP.NET Web API和SignalR使用OWIN。 我启动服务器(在控制台应用程序),使用此代码:

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

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

Answer 1:

WebApplication.Start方法具有一个接受过载IServiceProvider作为参数,因此能够注入我想要的数据。

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

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

现在,我的Startup类我只需要创建一个接收IMyInterface的一个构造函数:

public Startup(IMyInterface myInstance)
{
    ...
}


Answer 2:

您可以使用WebApp.Start Method (String, Action<IAppBuilder>)的过载 。

例:

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


文章来源: Pass a parameter to OWIN host
标签: c# owin