tag net mvc español asp c# asp.net-core iis-express kestrel-http-server

c# - español - asp.net core 2 mvc



Obtención del cierre de ASP.Net Core que desencadena el evento ApplicationStopping en IISExpress (2)

Soy consciente de que hay una pregunta previa sobre esto, también hay un problema de GitHub: https://github.com/aspnet/Hosting/issues/846 que parece estar resuelto en Microsoft.AspNetCore.Server.IISIntegration 1.1. Sin embargo, a pesar de tener esta versión, esto todavía no funciona en IISExpress (lo estoy probando haciendo que haga un Debug.WriteLine y también escriba en un archivo de registro en ApplicationStopping y ApplicationStopped). Estoy cerrando IISExpress usando el widget de la bandeja de herramientas.

No estoy seguro de si estoy haciendo algo mal, si IISExpress cerrado de esta manera se admite como un ''cierre elegante'' que desencadena estos eventos. Parece que esto puede funcionar bien en IIS, pero aparentemente no puede desarrollarse localmente con ASP.Net Core y IIS completo, así que me pregunto si hay alguna forma de activar estos eventos en un entorno de desarrollo para pruebas.

Aquí está el código en Startup.cs:

public void Configure(IApplicationBuilder app, IApplicationLifetime life, IHostingEnvironment env, ILoggerFactory loggerFactory) { // other configure code here life.ApplicationStopping.Register(() => Debug.WriteLine(">>Stopping")); life.ApplicationStopped.Register(() => Debug.WriteLine(">>Stopped")); }


Quizás pueda tener el método Application_End en la clase derivada de HttpApplication. Este método se invocará cuando se descargue su aplicación.


Tengo una aplicación con las últimas actualizaciones de NuGet y puedo verificar que ApplicationStopped y ApplicationStopping no se activan bajo IISExpress. ApplicationStarted parece funcionar bien.

He encontrado que si invocas la aplicación directamente en mi entorno de desarrollo, todo está bien.

Este artículo te dice cómo.

Es tan simple como seleccionar la aplicación del cuadro desplegable:

Me doy cuenta de que esto no es lo mismo que usar IIS Express, pero podría ayudarlo con su problema.

Casi olvidado, para invocar debe escribir Ctrl + C en la ventana de comandos que aparece cuando inicia la aplicación.