hola,
No entiendo el sesion.Abandon();
Se supone que cancel ala sesión, pero después de ejecutarlo recojo el estado de la sesión con
System.Web.SessionState.SessionStateMode estado = sesion.get_Mode();
y me devuleve InProc que según he leido se corresponde a
"El estado de la sesión está en proceso con un proceso de trabajo de ASP.NET. InProc es el valor predeterminado."
¿Al abandonar no debería tener estado Off ?