Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 MVC4检测会话超时_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 MVC4检测会话超时

Asp.net mvc 4 MVC4检测会话超时,asp.net-mvc-4,Asp.net Mvc 4,无法使以下标准代码正常工作。寻找一个完整的样本项目或帮助如何错误。 下面的代码 public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Session != null) { if (filterContext.HttpContext.Session.IsNewSession) {

无法使以下标准代码正常工作。寻找一个完整的样本项目或帮助如何错误。 下面的代码

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.HttpContext.Session != null)
    {
        if (filterContext.HttpContext.Session.IsNewSession)
        {
            string cookie = filterContext.HttpContext.Request.Headers["Cookie"];
            if ((cookie != null) && (cookie.IndexOf("_sessionId") >= 0))
            {
                filterContext.Result = newRedirectResult("~/SessionExpired/Index");  //redirect anywhere to message user UI , never hits this breakpoint
                return;
            }
        }
    }
    base.OnActionExecuting(filterContext);
}

是检查会话过期的标准。 但是在我的例子中,行
(cookie!=null)和&(cookie.IndexOf(“\u sessionId”)>=0)
总是返回false,因此用户永远不会被重定向

我正在用一个全新的向导创建的MVC4项目进行测试。 我找不到完整的下载示例。我怀疑我的配置是错的

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="1" slidingExpiration="true" name=".ASPXFORMSAUTH" />  
</authentication>    
<sessionState mode="InProc" timeout="1" cookieless="false"/>

尝试将“\u sessionId”中的“s”大写

比如:

搜索区分大小写。 此外,您所指的链接文章使用:

sessionCookie.IndexOf("ASP.NET_SessionId") >= 0)

这是一个非常晚的答案,但它可能会帮助其他人

如果我没有弄错的话,为了使这种方法起作用,表单身份验证超时必须设置为比会话本身更长的时间。这样,当您创建新会话(在服务器内存中)时,来自身份验证的cookie仍将存在于用户的计算机中,以指示用户最近被登录

您应该尝试以下方法:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="1000" slidingExpiration="true" name=".ASPXFORMSAUTH" />  
</authentication>    
<sessionState mode="InProc" timeout="10" cookieless="false"/>

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="1000" slidingExpiration="true" name=".ASPXFORMSAUTH" />  
</authentication>    
<sessionState mode="InProc" timeout="10" cookieless="false"/>