Este problema parece estar relacionado con la publicación this, pero no he podido inferir una solución del hilo.FormsAuthentication.SignOut throwing NullReferenceException
me di cuenta de este código en una aplicación que heredé (después de tomar nota en un archivo de registro que estaba siendo comido una excepción):
protected void Session_End(object sender, EventArgs e)
{
try
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
//if (this.Context.Handler is IRequiresSessionState || this.Context.Handler is IReadOnlySessionState)
//{
// FormsAuthentication.SignOut();
// FormsAuthentication.RedirectToLoginPage();
//}
}
catch (Exception ex)
{
this.GetType().GetLogger().Error(ex);
}
}
Me pregunto algunas cosas. En primer lugar, ¿cómo está lanzando SignOut una excepción de referencia nula? ¿Es un caso excepcional, o estoy haciendo algo inherentemente malo en mi programa? Luego, ¿con qué debería estar probando para evitar esta excepción antes de lanzarla?
15: 51: 57,288 [13] ERROR ASP.global_asax - System.NullReferenceException: Referencia de objeto no establecida en una instancia de un objeto. en System.Web.Security.FormsAuthentication.SignOut() en MvcApplication.Session_End
Gracias
Ahh ... He leído algo parecido, pero no lo entendí hasta que lo leí de otra forma. ¿Es eso decir que debería estar validando contra la existencia de HttpContext.Current, o que comer el mensaje de error es un medio aceptable de manejar la "aleatoriedad" de cuando Session_End se dispara? –
@Sean Debe usar 'Session_End' para eliminar la cookie de autenticación. Tiene un propósito diferente y solo puedes asumir que tienes acceso a las cosas del lado del servidor en ese contexto. Además, ¿por qué necesitarías eso en primer lugar? Si desea que caduque la cookie, simplemente deje que expire configurando su tiempo de espera. –
Lee tu edición. Gracias. –