Pregunta

Durante la práctica de personalizar VirtualPathProvider, descubrí que el VirtualPathProvider personalizado se puede registrar en Global.asax o en el método AppInitialize según MSDN http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx . Sin embargo, MSDN no describe claramente el método AppInitialize.

¿Algún método AppInitialize estático en la carpeta App_code será invocado automáticamente por el tiempo de ejecución de ASP.NET al inicio?

¿Fue útil?

Solución

Si bien hay poca documentación valiosa sobre el método AppInitialize (), está en lo cierto al suponer que cualquier clase en su carpeta App_Code que contenga una firma de método como esta:

public static void AppInitialize()

se invocará cuando se inicie la aplicación Asp.Net. Recuerde que App_Code es una carpeta especial para Asp.Net y todo lo que hay dentro se trata de manera un poco diferente. Buena suerte para encontrar documentación sobre todas las pequeñas peculiaridades (como las mencionadas anteriormente) de la carpeta App_Code.

Sin embargo, otra cosa para recordar es que solo una clase puede contener una firma para el método AppInitialize () o de lo contrario obtendrá un error del compilador en tiempo de ejecución similar a este:

  

El método AppInitialize está definido   tanto en 'App_Code.SomeClassOne' como en   'App_Code.SomeClassTwo'.

Entonces, si bien esto es perfectamente válido:

public class SomeClassOne
{
    public static void AppInitialize()
    {
        HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
    } 
}

Esto generará el error del compilador que mencioné anteriormente:

public class SomeClassOne
{
    public static void AppInitialize()
    {
        HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now;
    } 
}

public class SomeClassTwo
{
    public static void AppInitialize()
    {
        HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now;
    } 
}

Espero que esto te aclare un poco :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top