Using PreApplicationStartMethod for ASP.NET 4.0 Application to Initialize assemblies

Posted by ChrisD on Geeks with Blogs See other posts from Geeks with Blogs or by ChrisD
Published on Mon, 21 Nov 2011 02:30:21 GMT Indexed on 2011/11/21 17:52 UTC
Read the original article Hit count: 296

Filed under:
Sometimes your ASP.NET application needs to hook up some code before even the Application is started. Assemblies supports a custom attribute called PreApplicationStartMethod which can be applied to any assembly that should be loaded to your ASP.NET application, and the ASP.NET engine will call the method you specify within it before actually running any of code defined in the application.

Lets discuss how to use it using Steps :
1. Add an assembly to an application and add this custom attribute to the AssemblyInfo.cs. Remember, the method you speicify for initialize should be public static void method without any argument. Lets define a method Initialize. You need to write :
[assembly:PreApplicationStartMethod(typeof(MyInitializer.InitializeType), "InitializeApp")]
2. After you define this to an assembly you need to add some code inside InitializeType.InitializeApp method within the assembly.
public static class InitializeType
{
    public static void InitializeApp()
    {
          // Initialize application
    }
}
3. You must reference this class library so that when the application starts and ASP.NET starts loading the dependent assemblies, it will call the method InitializeApp automatically.
Warning
Even though you can use this attribute easily, you should be aware that you can define these kind of method in all of your assemblies that you reference, but there is no guarantee in what order each of the method to be called. Hence it is recommended to define this method to be isolated and without side effect of other dependent assemblies.
The method InitializeApp will be called way before the Application_start event or even before the App_code is compiled.
This attribute is mainly used to write code for registering assemblies or build providers.
I hope this post would come helpful.

© Geeks with Blogs or respective owner