11

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

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

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

4

2 回答 2

10

WebApplication.Start方法有一个接受IServiceProvider作为参数的重载,因此可以注入我想要的数据。

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

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

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

public Startup(IMyInterface myInstance)
{
    ...
}
于 2013-04-30T14:23:57.940 回答
4

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

例子:

using (WebApplication.Start(url, appBuilder => new Startup(myObject).Configuration(appBuilder)))
{
    Console.WriteLine("Running...");
    Console.ReadLine();
}
于 2017-03-30T11:07:25.477 回答