Я хотел бы использовать netTcpBinding для своего приложения WCF, которое в настоящее время размещается в IIS7, что означает настраивать его для использования, БЫЛ вместо этого. Это является довольно прямым однако, мое приложение ранее использовало событие Application_Start в global.asax файле. Я не требую доступа к httpContext (который я понимаю, что доступ был удален в IIS7), однако я все еще хотел бы сцепиться в запуск или init методы?
Эквивалент существует, когда хостинг приложения в был как соединен к IIS7?
Используя классический режим не опция (снова, я не интересуюсь httpcontext, и это только, кажется, работает при использовании http, связывающего) - и я видел пример помещения статического класса instide app_code папка, которая похожа на ужасный взлом.
Я полагаю, что AppInitialize()
- это метод, который вы ищете. Вот статья об его использовании для инициализации Castle Windsor в WCF-сервисе, расположенном в WAS:
Суть статьи в том, что вместо использования 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);
}
}
Цитирую Мэтта:
Признаюсь, я потратил некоторое время на более детальное изучение Host Factory, в поисках возможности обернуть
DefaultServiceHostFactory
. Однако, похоже есть гораздо более простое решение, которое заключается в использовании небольшого документированный метод AppInitialize. Если вы создадите класс (любой класс), поместите его в папку ASP.NETApp_Code
в вашем проекте и дадите ему сигнатуру метода, как определено ниже, этот малыш будет запущен именно тогда, когда вы этого захотите. Затем вы можете инициализировать свой IoC в этом контейнере.