2009-11-12 173 views
5

我的项目有问题。我的网站上有一个管理面板。人们可以使用用户名和密码登录编辑网站内容。有时用户最多可能需要30-40分钟才能输入内容,但会话超时仅在20分钟后过期。如何将会话超时设置超过20分钟?

我试图在web.config配置这一点,例如:

<authentication mode="Windows"/> 
<sessionState timeout="60" /> 

像这样:

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

,并试图在我的形式,这样的:

if (ds.Tables["LOG"].Rows.Count > 0)   
{ 
    Session["IsLoggedIn"] = "true";   
    Session.Timeout = 60;    
    Response.Redirect("Default.aspx");  
}   
else  
{     
    Label1.Text = "Username/Password is wrong!!";  
} 

上述解决方案都没有奏效。我尝试了每个单独和一起,但会议20分钟后仍然过期。

+0

不是真的与你的问题,但你应该考虑失败的登录一个更好的错误消息。 – Brandon 2009-11-12 22:46:14

+0

你应该修复你的应用程序,以便任何超时无关紧要 - 用户提交他们的内容,被要求重新登录,并且他们的内容不会丢失。如果你打算使用超时时间,只要你做出来就会有人击中它们。 – RichieHindle 2009-11-12 22:47:15

+0

我在土耳其语写了更好的错误信息,布兰登,别担心:) – 2009-11-12 22:48:16

回答

12

另一个提示是看看你的IIS设置。当我不得不改变我的超时时间时,我也必须进行一些服务器端更改。检查应用程序池的Idle Time-out设置。如果网站空闲(我认为默认为5分钟),那么应用程序池将关闭以节省服务器资源。这也会杀死一个会话。

尝试增加应用程序池的空闲超时时间,以查看这是否有帮助。

IIS»目录»配置»选项 和 程序池»属性

显然,如果你是在一个共享的托管环境中,您将最有可能无法调整此。

+0

不幸的是我在一个共享的托管Qubar。 – 2009-11-12 22:52:40

+1

当我遇到这种情况时,似乎IIS会话超时总是胜过web.config中定义的内容。我们必须将IIS升到60分钟。尝试与您的共享提供商合作,找出他们为会话超时设置的内容,以及是否有任何可以解决的问题。 – BStruthers 2009-11-12 23:13:33

+0

非常感谢! – Arpita 2015-12-30 09:23:44

1

你确定会超时吗?它也可能是由您的身份验证超时导致的(即,身份验证Cookie设置为在20分钟后过期)。确保会话超时和身份验证超时都设置为相同的值。

5

当您使用默认会话状态模式“InProc”(In Process)时,会话状态数据非常脆弱,每当AppPool回收时都会丢失。

考虑使用其他内置会话状态模式,这些状态模式在流程外运行,因此不受AppPool回收的影响。这些是“StateServer”模式(在单独的进程中在内存中运行)和“SqlServer”模式(存储在SQL Server DB中的状态数据)。

您将希望使用这些进程外会话状态模式之一,以便为您的会话数据提供更强大的健壮性,尤其是在需要更长的会话超时时。这并不能回答你为什么会话过早超时的问题,但它将成为解决方案的一部分。

各种会话状态模式在健壮性,内存要求,可伸缩性和性能方面都各有优缺点,所以您需要熟悉它们以便为您的应用程序找出正确的选择。

作为一个便笺,请始终考虑您的数据是否需要进入会话。如果数据量不是太多,在同一页面上的回发之间需要数据时,通常更好使用ViewState。完全可以开发完全不使用Session的ASP.NET应用程序,或者非常谨慎地使用它,而且当你不使用Session时,通常我会发现事情更直观。浏览器后退按钮。你的数据库在那里坚持你的数据,所以不要害怕使用它。如果您使用Session在页面之间传递表或数据集,请考虑您是否确实需要。您可以通过查询字符串传递参数,然后使用这些参数在请求页面时从数据库获取数据吗?

参见:MSDN Session State Modes

+0

THANK YOUU !!!!!!无意中看到这个评论查找完全不同的东西,有“InProc”介绍的问题,但从未想出如何解决它们。再次感谢,好评! – 2015-02-27 15:44:14