Ответ 1
Я считаю, что AppInitialize()
- это метод, который вы ищете. Здесь статья об использовании его для инициализации Castle Windsor в WAS-сервисе WCF:
Суть статьи заключается в использовании Application_Start()
, который не будет вызван в WAS:
protected void Application_Start(object sender, EventArgs e)
{
var container = new WindsorContainer("ioc.config");
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}
Использование:
public class InitialiseService
{
/// <summary>
/// Application initialisation method where we register our IOC container.
/// </summary>
public static void AppInitialize()
{
var container = new WindsorContainer("ioc.config");
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}
}
Чтобы процитировать Matt:
Я признаюсь, что провел некоторое время, глядя на Host Factory более подробно, чтобы обернуть
DefaultServiceHostFactory
. Однако появляется быть гораздо более простым решением, а именно использовать мало документированный метод AppInitialize. Если вы создаете класс (любой класс) поместите его в папку ASP.NETApp_Code
в своем проекте и как определено ниже, этот маленький ребенок будет уволен точно, когда вы этого хотите. Затем вы можете инициализировать IoC контейнер там.