【问题标题】:Session in asp.net expirationasp.net 中的会话过期
【发布时间】:2012-06-25 09:39:59
【问题描述】:

我正在使用会话传递一个变量,但在服务器上登录后会话在 2 -3 分钟后自动过期,可能是什么问题?

webconfig 文件:

 <sessionState  timeout="1440" mode="InProc"></sessionState>
    <authentication mode="Forms">
        <forms name="School" loginUrl="Login.aspx" defaultUrl="default.aspx" 
               timeout="1440" slidingExpiration="true" protection="All" path="/" />
    </authentication>

我更改了超时但它不起作用。

【问题讨论】:

  • 您忘记发布代码了吗?
  • @RayCheng XML 文本被 SO 解析,除非它被代码阻塞,以后编辑和格式化代码.. :D
  • @Baz1nga,我不知道。感谢您的提示。
  • 到底什么过期了;会话还是身份验证票?
  • @mouters,我猜 OP 意味着用户会话超时。 OP 还将会话和表单的超时设置为 1440 分钟。

标签: asp.net iis login web-config session-timeout


【解决方案1】:

Enablecheck the logsperformance counters 如果应用程序池由于某些 (configurable) 原因重新启动,以及 loses it's sessions。示例包括内存不足(如果您有共享的应用程序池,则更有可能),如果您每分钟有太多错误(可能是“隐藏”错误,例如由搜索引擎蜘蛛触发),或者您正在更改观察到的文件或观察到的文件夹中(如web.configbin\)。

根据您的会话“正常运行时间”要求,由于重新启动应用程序池将丢弃(“过期”)您的所有 in process 会话,您可以通过使用进程外会话状态存储来“修复”该问题,例如ASP.NET/Windows State Service/ServerSQL Server

如果您认为这是 IIS 配置或服务器问题而不是代码问题,您可以随时在 ServerFault 上提问。

【讨论】:

    【解决方案2】:

    您的 Session 和 Forms 超时设置看起来不错,但仍有许多事情可能会导致您认为 session 已超时。我建议您按以下方式调查该问题:

    网络设置:如果您的服务器负载平衡,请确保配置适用于会话。

    应用程序池:检查 IIS 上的应用程序池刷新/重置规则。确保没有设置每 20 个请求或类似请求刷新池。

    任务管理器:查看任务管理器,看看 IIS 工作进程是如何工作的(w3wp.exe)。它会被杀毒程序杀死吗?如果是这样,会话肯定会超时。

    事件日志:最后看一下windows事件日志。查看是否有与超时相关的事件条目。

    【讨论】:

      【解决方案3】:

      将此添加到您的 Global.asax.cs

       protected void Session_Start(object sender, EventArgs e)
              {
                  Session.Timeout = 240;
              } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 2015-01-14
        • 2012-01-19
        • 2016-11-08
        • 1970-01-01
        相关资源
        最近更新 更多