что является global.asax Application_Start эквивалентный, когда использование БЫЛО в IIS7

Я хотел бы использовать netTcpBinding для своего приложения WCF, которое в настоящее время размещается в IIS7, что означает настраивать его для использования, БЫЛ вместо этого. Это является довольно прямым однако, мое приложение ранее использовало событие Application_Start в global.asax файле. Я не требую доступа к httpContext (который я понимаю, что доступ был удален в IIS7), однако я все еще хотел бы сцепиться в запуск или init методы?

Эквивалент существует, когда хостинг приложения в был как соединен к IIS7?

Используя классический режим не опция (снова, я не интересуюсь httpcontext, и это только, кажется, работает при использовании http, связывающего) - и я видел пример помещения статического класса instide app_code папка, которая похожа на ужасный взлом.

34
задан Mike Tours 16 March 2010 в 09:59
поделиться

1 ответ

Я полагаю, что AppInitialize() - это метод, который вы ищете. Вот статья об его использовании для инициализации Castle Windsor в WCF-сервисе, расположенном в WAS:

Castle Windsor and non-HTTP Protocol WCF Services

Суть статьи в том, что вместо использования 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.NET App_Code в вашем проекте и дадите ему сигнатуру метода, как определено ниже, этот малыш будет запущен именно тогда, когда вы этого захотите. Затем вы можете инициализировать свой IoC в этом контейнере.

26
ответ дан 27 November 2019 в 17:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: