ASP.NET Session TimeOut问题

时间:2011-02-09 11:52:48

标签: asp.net

我在我的一个ASP.net应用程序中有一个有线场景。

我使用自定义“roleManager”的ASP.net会员资格,

并在web.config中使用以下标记来限制任何没有“关键字”(角色)角色的用户访问“关键字”(路径)文件夹

<location path="Keywords">

<system.web>

<authorization>

<allow roles="Keywords"/>

<deny users="*" />

</authorization>

</system.web>

</location>

如果任何具有其他角色的用户允许评估此URL(在这种情况下为关键字)将被重定向到自定义访问被拒绝页面。

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

请在这种情况下帮助我。

提前致谢

2 个答案:

答案 0 :(得分:2)

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

您可以通过在Web.config中指定更长的时间(以分钟为单位)来扩展它:

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

如果您通过表单进行身份验证,则应提高身份验证cookie超时值以匹配。

另外请记住,在IIS下运行站点时,您应该将应用程序池的空闲时间延长到类似的值。如果不这样做,将卸载ASP.NET站点的HttpApplication实例,从而销毁该过程中的所有活动会话。

答案 1 :(得分:0)

通常,第一个也是最简单的事情就是将configuration/system.web/sessionState@timeout值更改为类似“90”的内容

<sessionState timeout="90" />

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

这里有几个问题在一起:

  1. 应用程序池的工作进程默认空闲超时也是 设置为20分钟
  2. 存储会话状态的默认模式是在IIS进程中
  3. 通过单击应用程序所在的应用程序池上的“属性”(IIS 6)或“高级设置”(IIS 7.5),可以找到应用程序池的设置。

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

    尝试此解决方案如果仍有问题请参阅本文,它告诉更多选项尝试

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