【问题标题】:ASP.NET Session TimeOut problemASP.NET 会话超时问题
【发布时间】:2011-02-09 11:52:48
【问题描述】:

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

我将 ASP.net 成员资格与我的自定义“roleManager”一起使用,

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

<location path="Keywords">

<system.web>

<authorization>

<allow roles="Keywords"/>

<deny users="*" />

</authorization>

</system.web>

</location>

如果任何具有其他角色的用户允许访问此 URL(在本例中为关键字),则将被重定向到自定义拒绝访问页面。

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

在这种情况下请帮助我。

提前致谢

【问题讨论】:

标签: asp.net


【解决方案1】:

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

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

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

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

还要记住,在 IIS 下运行站点时,您可能应该将应用程序池的空闲超时延长到类似的值。如果您不这样做,您的 ASP.NET 站点的 HttpApplication 实例将被卸载,从而破坏进程中的所有活动会话。

【讨论】:

  • 我已经添加了 我还在 元素中设置了 timeout="365"我的网络配置。一切正常,但是当我将会话打开超过 30 分钟时,它不允许我访问我在位置标签中设置了 的那些页面,但是当我尝试设置 它工作正常。我需要 因为它会限制任何没有角色的用户进入我的文件夹。
  • 您为什么期望会话会以某种方式超出其超时值?
  • Joe 首先感谢您的快速回复,我上次忘记了!好吧,当我的会话超时时,如果她单击任何链接(服务器请求),用户将重定向到登录页面,在提供凭据后,我使用 Request.QueryString [“ReturnUrl”] 将她重定向回她正在处理的页面。但是当她再次登录时,她得到了我的自定义访问被拒绝页面,即使在同一个 IE 浏览器的新标签中,用户也无法访问该页面,她必须关闭窗口! :-(
【解决方案2】:

通常,首先要做的也是最简单的事情就是将 configuration/system.web/sessionState@timeout 值更改为“90”​​之类的值

<sessionState timeout="90" />

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

这里有几个问题联系在一起:

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

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

确保将“Idle-Time-out(minutes)”的值设置为会话的超时时间,至少(例如 90),以确保所有会话在整个过程中持续存在会话超时时间。

如果仍然存在问题,请尝试此解决方案,请参阅这篇文章,它会告诉您更多尝试的选项

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多