protected override void OnExecute(HttpContext ctx)
{
using (Session.Tracker.Exclusive(WebServerLockTimeoutMS, Response.Log))
{
Session.AsyncLog.CopyInto(Response.AsyncLog);
Session.AsyncLog = new SerializableLog();
if (Session.IsActive)
{
Response.Log.Write("Ending the active session ({0})", Session.ID);
EndSession(Response.Log);
Response.Log.Write("Session has been ended");
}
else if (Session.IsRollbackPending)
{
// handle unexpected app domain restarts where there's no active session but a rollback is still expected
Session.IsRollbackPending = false;
Response.Log.Write("Cleaned up session after unexpected app domain restart");
}
else
{
Response.Log.Write("There is no active session to end");
}
Module.PersistSessionState();
}
}