2013-03-19 6 views
9

Я являюсь владельцем ASP.NET Web API и SignalR с использованием OWIN. Я запускаю сервер (в консольном приложении) с помощью этого кода:Передача параметра на хост 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