WebActivatorEx против OwinStartup

В приложении WebAPI, например, какая разница между

[assembly: OwinStartup(typeof(MyClass), "MyMethod")]

и

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyClass), "MyMethod")]

?

Ответы

Ответ 1

Оба они похожи на высоком уровне в том смысле, что они позволяют выполнять инициализацию вашего веб-приложения, но они различаются по следующим важным причинам, как показано ниже:

  • Методы, ориентированные на WebActivatorEx.PreApplicationStartMethodAttribute, будут выполняться до запуска приложения. Это позволяет вам делать что-то вроде инъекции HttpModule и т.д.
  • Методы, нацеленные на OwinStartupAttribute, будут выполняться после инициализации приложения. Это связано с тем, что этот тип запуска вызывается OwinHttpModule, который сам по себе вводится при использовании System.Web.PreApplicationStartMethodAttribute.
  • Запуск Owin можно отключить с помощью настройки с помощью appsetting в web.config owin:AutomaticAppStartup
  • Существует также System.Web.PreApplicationStartMethodAttribute, который с .NET 4.5 может использоваться несколько раз в сборке.

Итак, чтобы суммировать, это порядок выполнения методов в зависимости от используемых атрибутов.

  • System.Web.PreApplicationStartMethodAttribute
  • WebActivatorEx.PreApplicationStartMethodAttribute
  • Метод Global.asax(Application_Start)
  • OwinStartupAttribute

Ответ 2

Я нашел ответ здесь:

В новом SignalR API больше не используется WebActivatorEx. OwinStartup предпочитается вместо WebActivator.