Problema em ASP.NET MVC Session.IsNewSession com o Google Chrome
No momento, estou trabalhando em uma parte da lógica da Sessão expirada para o meu projeto ASP.NET 3.5 MVC 2 para desconectar um usuário e redirecioná-lo para a ação de Logon do AccountControlle
Tenho o seguinte atributo em todas as minhas ações que se preocupam com o estado da sessão, e esse trecho de código funciona no IE 8, mas não no Firefox 4 ou no Google Chrome 10. O sintoma é quando tento navegar para uma exibição representada por uma ação com meu atributo [SessionExpireFilter], a propriedade ctx.Session.IsNewSession no código abaixo é avaliada como "true" toda vez, mesmo se eu tiver apenas alguns segundos na minha sessão de 30 minuto
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
// check if session is supported
if (ctx.Session != null && ctx.Session.IsNewSession)
{
// If it says it is a new session, but an existing cookie exists, then it must
// have timed out
string sessionCookie = ctx.Request.Headers["Cookie"];
if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
{
FormsAuthentication.SignOut();
ctx.Response.Redirect("~/Account/LogOn");
}
}
base.OnActionExecuting(filterContext);
}
}
Existe alguma maneira de descobrir por que o Chrome e o Firefox estão se comportando dessa maneira, mas o IE não está? Desde já, obrigado
EDIT: Isso não está funcionando no FF como eu acreditava originalmente. Estou sendo direcionado para minha ação de Logon imediatamente após efetuar login e tentando acessar uma ação com meu atributo SessionExpireFilter.