2013-01-25 334 views
0

我已经阅读了一些其他线程从这里和外面,但没有工作......我有几个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一些文章,但我无法得到它= \
感谢

+0

您是否注销并重定向到登录页面,因为会话实际已过期.....? –

+0

嗯,我这么认为,因为还有什么呢?如果会话为空,我在每个页面上都测试了'Session'我重定向到login.aspx ...你有什么想法? – Ghaleon

+0

这是'秒',不'minuts'? – Ghaleon

回答

0

您应该检查,如果你不重定向到一个不同的(子)域。在每个域中,用户将获得一个sepperate会话。例如:

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

已开始会话。

+0

Humm ...我不知道回答这个问题。我有两个母版页,它是子页面......我只是重定向到这些页面......我怎么能知道这一点? ; s 谢谢! – Ghaleon

+0

在浏览器中查看您的网址。 – Peter

+0

唯一改变的是页面的名称。 /xxx.aspx – Ghaleon

0

一旦应用程序池回收,您也将失去会话。看看这个链接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设置中的错误设置导致应用程序池回收并因此会话消失。