In a WebAPI application for example, what is the difference between
[assembly: OwinStartup(typeof(MyClass), "MyMethod")]
and
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyClass), "MyMethod")]
?
In a WebAPI application for example, what is the difference between
[assembly: OwinStartup(typeof(MyClass), "MyMethod")]
and
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyClass), "MyMethod")]
?
I found the answer here:
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:
WebActivatorEx.PreApplicationStartMethodAttribute
will execute before the Application has started up. This allows you to do things like injecting an HttpModule etc.OwinStartupAttribute
will execute after Application has initialized. This is because this kind of startup is invoked byOwinHttpModule
which in itself is injected in usingSystem.Web.PreApplicationStartMethodAttribute
.owin:AutomaticAppStartup
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
Application_Start
method)OwinStartupAttribute