asp.net - session_end - programar en asp net
¿Existe Application_End de Global.asax en Owin? (2)
Startup.cs
es una nueva forma de inicializar su aplicación en lugar de Application_Start
en Global.asax y está bien. ¿Pero hay un lugar para poner mi lógica de desmontaje, por ejemplo esto:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_End()
{
// Release you ServiceBroker listener
SqlDependency.Stop(connString);
}
}
Se miró en Microsoft.Owin espacio de nombres Microsoft.Owin pero solo parece tener OwinStartupAttribute
. ¿Esto significa que los eventos del ciclo de vida de la aplicación aún se procesan mediante la instancia de System.Web.HttpApplication
y no son compatibles con la especificación OWIN?
He empaquetado esto en un pequeño ayudante para que pueda hacer esto:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.OnDisposing(() =>
{
// do stuff
});
}
}
El ayudante:
static class AppBuilderExtensions
{
public static void OnDisposing(this IAppBuilder app, Action cleanup)
{
var properties = new AppProperties(app.Properties);
var token = properties.OnAppDisposing;
if (token != CancellationToken.None)
{
token.Register(cleanup);
}
}
}
AppProperties
, que se encuentra en Microsoft.Owin.BuilderProperties
, expone el CancellationToken
para OnAppDisposing
.
Puedes obtener este token y registrar una devolución de llamada
public class Startup
{
public void Configuration(IAppBuilder app)
{
var properties = new AppProperties(app.Properties);
CancellationToken token = properties.OnAppDisposing;
if (token != CancellationToken.None)
{
token.Register(() =>
{
// do stuff
});
}
}
}