【问题标题】:Session timeout issue会话超时问题
【发布时间】:2010-06-01 18:03:14
【问题描述】:

我有一个基于角色的 ASP.NET C# Web 应用程序,其中我将菜单对象放入会话中,并且我在 web.config 中配置了会话超时,如下所示:

 <forms defaultUrl="Home.aspx" loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="10"></forms>

我首先以员工身份登录系统并等到会话到期,然后当我单击菜单中的链接时,我被正确地重定向到带有 ReturnUrl 参数的登录页面。现在,当我尝试以管理员身份登录系统时,我仍然看到员工菜单而不是管理员菜单。加载菜单的方法首先检查菜单会话对象是否不为空,如果是,则从会话中加载菜单,如果不是,则构建菜单并将其放入会话中。因此,当系统超时时,菜单会话对象不会被清除。我怎样才能解决这个问题?

【问题讨论】:

    标签: c# asp.net session web-config


    【解决方案1】:

    您还需要为会话设置超时,并确保它与您的身份验证超时值相同。

    <sessionState cookieless="UseCookies" timeout="10" useHostingIdentity="true"/>
    

    这应该会在身份验证过期的同时终止会话。

    【讨论】:

      【解决方案2】:

      确保您在测试以管理员身份登录时没有重复使用同一个浏览器。如果您以员工身份登录,然后使用相同的浏览器窗口以管理员身份登录,那么您可能不小心重用了同一个会话。添加一些跟踪或断点,以验证您的菜单是否在您期望的时候构建,而不是简单地退出会话。

      如果这不是问题所在,那么在您跟踪或单步执行代码时,请验证您的应用程序是否正确识别出用户是管理员并且正在构建正确的菜单。

      【讨论】:

        猜你喜欢
        • 2011-04-24
        • 2017-12-01
        • 2011-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多