Hola a a todos, generalmente cuando se necesita ejecutar algún método al inicio de alguna aplicación se hace uso del método Application_Start del Global.asax, adicionalmente a esa opción es posible utilizar WebActivator que permite hacer el llamado a un método en tres diferentes momentos:

  • PreApplicationStartMethod
  • PostApplicationStartMethod
  • ApplicationShutdownMethodAttribute

Para crear una clase con WebActivator, lo primero es añadir el paquete WebActivator mediante Nuget:

WebActivator1

Luego de agregar el paquete, agregamos una clase en el folder App_Start, para el demo la he llamado TestWebActivator, con tres sencillos métodos:


public class TestWebActivator
{
    public static void Start()
    {
        Debug.Write("Pre applicayion start");
    }

    public static void Started()
    {
        Debug.Write("Post application start");
    }

    public static void Shutdown()
    {
        Debug.Write("Application shutdown");
    }
}

Y ahora, para que esos métodos puedan ser llamados mediante WebActivator, antes del namespace definimos el evento y la función asociada:


[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TestWebActivator), "Start")]
[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(TestWebActivator), "Started")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(TestWebActivator), "Shutdown")]

Finalmente la clase quedaría:


[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TestWebActivator), "Start")]
[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(TestWebActivator), "Started")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(TestWebActivator), "Shutdown")]

namespace WebActivatorClass
{
    public class TestWebActivator
    {
        public static void Start()
        {
            Debug.Write("Pre applicayion start");
        }

        public static void Started()
        {
            Debug.Write("Post application start");
        }

        public static void Shutdown()
        {
            Debug.Write("Application shutdown");
        }
    }
}

Y eso es todo, espero les sea de utilidad, saludos!