无法在ASp MVC 4.5应用程序中控制会话时间

时间:2017-05-09 16:33:28

标签: c# asp.net asp.net-mvc session

我用它来登录:

 var f = from b in db.AdminToybias
                        where b.UserName == a.UserName
                        && b.Password == a.Password
                        select b;
                if (f.Count() >= 1)
                {
                    Session["uname"] = f.FirstOrDefault().UserName;
                    Session["pass"] = f.FirstOrDefault().Password;
                    Session["role"] = f.FirstOrDefault().Role;

我试过了两个:

      <sessionState timeout="1440" mode = "InProc"></sessionState>

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="288000" />
</authentication>

但是应用程序会在几分钟后自动注销用户(不知道确切的时间)。我想让会话无限时间,直到他手动注销。 我试了这么多个小时却失败了。我能做些什么来实现这个目标? 我正在使用Godaddy Hosting。

1 个答案:

答案 0 :(得分:0)

他们是不同的东西。表单身份验证超时值设置身份验证cookie设置为有效的时间(以分钟为单位),这意味着,在值分钟后,cookie将过期,用户将不再进行身份验证 - 它们将被重定向到自动登录页面 - 。 slidingExpiration = true值基本上表示在每次发出请求后,计时器都会重置,只要用户在超时值内发出请求,它们就会继续进行身份验证。如果设置slidingExpiration = false,则无论用户是否在超时值内发出请求,身份验证cookie都将在值分钟后过期。

SessionState超时值设置会话状态提供程序在特定会话中保存内存(或正在使用的任何后备存储,SQL Server,OutOfProc等)中的数据所需的时间。例如,如果使用示例中的值将对象放入Session中,则此数据将在30分钟后删除。用户可能仍然经过身份验证,但会话中的数据可能不再存在。会话超时值始终在每次请求后重置。