2011-02-09 36 views
3

我在我的一个ASP.net应用程序中有一个有线场景。ASP.NET Session TimeOut问题

我使用ASP.net成员与我自定义“roleManager”,

的并具有下在web.config中的标签来限制任何用户不必访问“关键词”(“关键词”(角色)的角色路径)文件夹

<location path="Keywords"> 

<system.web> 

<authorization> 

<allow roles="Keywords"/> 

<deny users="*" /> 

</authorization> 

</system.web> 

</location> 

如果与其他一些角色的任何用户允许评估这个URL(关键词在这种情况下)将被重定向到一个定做拒绝访问页面。

现在事情工作正常,但当我离开我的应用程序与30分钟的不活动时,我无法访问“关键字”,所有时间我最终与自定义访问被拒绝的页面,如果我关闭浏览器,再次登录它开始工作正常。

请在这种情况下帮助我。

在此先感谢

+0

你跟FormsAuthentication登录?如果是这样,你是否检查过该cookie是为用户重新加载的? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx – 2011-02-09 11:56:41

回答

2

默认情况下,ASP.NET会话20分钟后超时,我想。

您可以通过在Web.config中指定一个较长的时间(以分钟为单位)扩展这个:

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

如果您通过表单验证,你应提高验证cookie超时值相匹配。另外请记住,在IIS下运行站点时,您应该将应用程序池的闲置timout扩展为类似的东西。如果您不这样做,则ASP.NET站点的HttpApplication实例将被卸载,从而破坏进程中的任何活动会话。

+0

我已经添加了另外I在我的webconfig中的元素中设置了timeout =“365”。所有工作正常,但当我打开会话超过30分钟时,它允许我访问那些在位置标记中设置了<拒绝用户=“*”/>的页面,但是当我尝试设置<拒绝用户=“时, ?” />它工作正常。我需要 bcos它会限制任何用户没有角色到我的文件夹。 – 2011-02-09 12:32:21

0

通常情况下,要做的第一和最简单的事情了configuration/system.web/[email protected]值只是更改为类似“90后“

<sessionState timeout="90" /> 

仍出现20后超时分钟。 * 这没有任何意义,它明确表示会话超时应该恰好是90分钟。 *

有几个问题是绑在这里汇集:

  1. 应用程序池的工作进程默认的超时时间也 设置为20分钟
  2. 的存储会话状态是在默认模式下IIS进程

应用程序池的设置可以通过单击应用程序所在的应用程序池上的属性(IIS 6)或高级设置(IIS 7.5)来找到 分配给。

确保“空闲超时(分钟)”的值设置为会话超时(至少为90),以确保所有会话在整个会话超时期间内保持不变。

尝试这种解决方案,如果仍然有问题请参考本文它告诉更多的选项来尝试

http://asp-net.vexedlogic.com/2012/05/23/aspasp-net-session-timeout-how-do-i-change-it/