【问题标题】:Session Cookie Timeout Asp.net mvc Windows Authentication会话 Cookie 超时 Asp.net mvc Windows 身份验证
【发布时间】:2016-06-23 17:50:54
【问题描述】:

当用户第一次访问基于 Windows 身份验证的系统时,我使用会话 cookie 来存储一个 int。 cookie是使用这种方法设置的

public ActionResult SetContractId(int contractId)
{
    Session["LoggedContractId"] = contractId;

    return RedirectToAction("IndexLoggedIn");
}

并使用 this 在其他方法中访问它

var creatorContractId = (int)Session["LoggedContractId"];

但是这个 cookie 在 20 分钟后超时,我似乎无法控制这个时间

我已经在 webconfig 中尝试过这个

<system.web>
    <sessionState mode="InProc" timeout="1200" />
    <compilation debug="true" targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
    <authentication mode="Windows" />
    <customErrors mode="Off" />
    <authorization>
        <deny users="?" />
    </authorization>
</system.web>

但不影响它

【问题讨论】:

  • 将 mode="InProc" 属性添加到您的 sessionState 元素

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


【解决方案1】:

在您不超过 IIS 中的应用程序池回收时间之前,我不会工作。此 web.config 设置当且仅当它小于或等于应用程序池回收设置并且默认应用程序池有 20 分钟设置时才会生效,所以请更改它然后更改 web.config .. 它将 100% 工作

【讨论】:

  • 我对IIS不熟悉,IIS8.5在哪里?
  • 进入你网站配置的应用池,点击右侧应用池,可以找到Advance Settings,点击,然后找到Idle Time Out属性并修改
【解决方案2】:

也添加模式,这将起作用。

 <system.web>
       <compilation debug="false" targetFramework="4.5.1" />
        <sessionState mode="InProc" timeout="240" />
      </system.web>

【讨论】:

  • 遗憾的是,这不起作用仍然会出现错误,指出会话 cookie 未设置
  • 您是否还在配置中定义了表单超时?
  • 之后试试,能否请您在访问Session["LoggedContractId"]的地方添加代码?
  • 如果这与空闲超时有关,请参阅stackoverflow.com/questions/12314472/…
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 2015-03-25
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多