'Правда'

тоящее время я работаю над частью логики Session expired для моего проекта ASP.NET 3.5 MVC 2, чтобы выйти из системы пользователя и перенаправить его в действие AccountOontroller LogOn.

У меня есть следующий атрибут для всех моих действий, которые заботятся о состоянии сеанса, и этот фрагмент кода работает в IE 8, но не в Firefox 4 или Google Chrome 10. Симптом - это когда я пытаюсь перейти к представлению, представленному действием с В моем атрибуте [SessionExpireFilter] свойство ctx.Session.IsNewSession в приведенном ниже коде каждый раз оценивается как «true», даже если я буду только секундой в моем 30-минутном сеансе.

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);
    }
} 

Есть ли способ выяснить, почему Chrome и Firefox ведут себя так, а IE - нет? Заранее спасибо.

РЕДАКТИРОВАТЬ: Это не работает в FF, как я изначально верил. Я сразу после входа в систему пытаюсь получить доступ к действию с моим атрибутом SessionExpireFilter.