WebActivatorEx vs OwinStartup

asp.net, owin, web

Solution

They both are similar at a high level in the sense that they allow you to carry out initialization of your web application, but they are different in some important ways as below:

- Methods targeted by `WebActivatorEx.PreApplicationStartMethodAttribute` will execute before the Application has started up. This allows you to do things like injecting an HttpModule etc.

- Methods targeted by `OwinStartupAttribute` will execute after Application has initialized. This is because this kind of startup is invoked by `OwinHttpModule` which in itself is injected in using `System.Web.PreApplicationStartMethodAttribute`.

- Owin startup can be disabled via configuration by using an appsetting within web.config of `owin:AutomaticAppStartup`

- There is also `System.Web.PreApplicationStartMethodAttribute` which as of .NET 4.5 can be used multiple times within an assembly.

So to summarise, this is the order of execution of methods depending on the attributes used.

- `System.Web.PreApplicationStartMethodAttribute`

- `WebActivatorEx.PreApplicationStartMethodAttribute`

- Global.asax (`Application_Start` method)

- `OwinStartupAttribute`

Problem

In a WebAPI application for example, what is the difference between ``` [assembly: OwinStartup(typeof(MyClass), "MyMethod")] ``` and ``` [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyClass), "MyMethod")] ``` ?

Original source

Related problems