asp.net - requestdelegate - middlewares asp net core
¿Cuándo se invoca el método AppInitialize en ASP.NET? (1)
Durante la práctica de personalizar VirtualPathProvider, descubrí que el VirtualPathProvider personalizado puede registrarse en Global.asax o en el método AppInitialize de acuerdo con MSDN http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider .aspx . Sin embargo, MSDN no describe claramente el método AppInitialize.
¿El método de ejecución de ASP.NET invocará automáticamente cualquier método de aplicación estática AppInitialize en la carpeta App_code al inicio?
Si bien hay muy poca documentación sobre el método AppInitialize (), tiene razón 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 adentro se trata de manera un poco diferente. Buena suerte para encontrar documentación sobre todas las pequeñas peculiaridades (como la mencionada 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 de compilación en tiempo de ejecución similar a esto:
El método AppInitialize se define 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 de compilación 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 aclare un poco las cosas para ti :)