ASP.NET MVC中的会话过期问题

时间:2010-06-16 06:43:28

标签: asp.net

您好我的ASP.NET MVC会话状态有一些问题,在我实现下面的代码并将属性放在方法之后没有到期。

public sealed class SessionActionFilterAttribute : ActionFilterAttribute
{
    public override void  OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext ctx = HttpContext.Current;
        //Check if session is supported 
        if (ctx.Session != null)
        { 
            //Check if the session is new
            if (ctx.Session.IsNewSession)
            {
                //If it says it is a new session but an existing cookie exists
                //then it must have timed out
                string sessionCookie = filterContext.HttpContext.Request.Headers["Cookie"]; 
                if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId", StringComparison.OrdinalIgnoreCase) >= 0))
                {
                    //Redirect to the login page
                    ctx.Response.Redirect("~/Home/Index", true);
                    ctx.Response.End();
                }
            }
        }
        base.OnActionExecuting(filterContext);
    }
}

问题是重定向请求未执行,并且执行具有SessionActionFilter属性的Action。此方法使用已过期的会话变量并导致错误。

有人可以告诉我缺少什么吗?

提前多多感谢!!

1 个答案:

答案 0 :(得分:0)

我们正在存储一些在我们的视图中使用的数据!!还有一个更新,我能够运行这段代码,现在工作正常。但是,我对使用cookie有点怀疑,并且需要将此代码转换为无cookie会话。这怎么可能?