【问题标题】:Set timeout for sessions设置会话超时
【发布时间】:2013-01-25 19:25:19
【问题描述】:

我从这里和外部阅读了一些其他线程,但没有任何效果......我有一些Sessions 喜欢(登录名,列的值......)。我想设置一个时间到Sessions过期...我试过了:

Session.TimeOut = "60";

并且还使用web.cfg

<configuration>
  <system.web>
     <sessionState timeout="60"></sessionState>
  </system.web>
</configuration>

我在每个 page_load 上测试Session,例如:

if(Session["login"] == null)
{
   Response.Redirect("/Login.aspx");
}

但似乎Session 在导航中间迷路了,因为过了一段时间(1 分钟、5 分钟、2 分钟 ....)它返回到login page。这里有什么问题? 我还阅读了一些关于Membership Authentication 的文章,但我无法理解 =\
谢谢

【问题讨论】:

  • 您是否因为会话实际上已过期而退出并重定向到登录页面.....?
  • 嗯,我想是的,因为它还能是什么?如果会话为空,我在每个页面上都测试了Session 我重定向到 login.aspx... 你有什么想法?
  • 那是seconds,不是minuts
  • 我希望在你的代码中的某个地方你正在做类似Session["login"] = "somevalue" 这样的["login"] 键不为空。最好在登录后。
  • 我在login.aspx 上执行...然后当Sessions 到期时,我重定向到登录页面...我将再次执行此过程。对不对?

标签: asp.net visual-studio-2010 session timeout


【解决方案1】:

您应该检查您是否没有重定向到不同的(子)域。在每个域上,用户将获得一个单独的会话。例如:

http://ww.mydomain.com
http://wwww.mydomain.com

有单独的会议。

【讨论】:

  • 嗯...我不知道回答这个问题。我有两个母版页,它是子页...我只是重定向到这些页面...我怎么知道这个? ;s 谢谢!
  • 在浏览器中查看您的网址。
  • 唯一改变的是页面的名称。 /xxx.aspx
【解决方案2】:

一旦应用程序池回收,您也将丢失会话。如果您发现任何有用的信息可以帮助您解决问题,请查看此链接 http://blogs.msdn.com/b/johan/archive/2007/05/16/common-reasons-why-your-application-pool-may-unexpectedly-recycle.aspx

我曾经遇到过类似的问题,在 web.config 中会话超时设置为 60 分钟,但在 20 分钟后会话仍然丢失。原来是 IIS 设置中的错误设置导致应用程序池回收,因此会话消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多