会话意外超时



我正面临一个很奇怪的问题。实际上,我用ASP开发了一个web应用程序。. NET使用c#。我的应用程序有两部分:一部分用于管理员,另一部分用于用户。当我在本地服务器上运行我的应用程序时,它工作正常,但当我在远程服务器上托管它时,我面临着一个奇怪的问题。问题是,当我浏览应用程序或点击任何按钮或链接按钮时,有时它会重定向到登录页面。我不明白问题出在哪里。我在每个页面上检查会话,像这样:

    if (Session["admin"] != null)
    {
        // do some thing.
    }
    else
    {
        Response.Redirect("AdminLogin.aspx");
    }

我设置了web会话超时时间。配置文件<sessionState mode="InProc" timeout="10000"></sessionState>,但我仍然面临这个问题。有谁能帮帮我吗?谢谢。

如果您正在使用InProc会话,那么您的应用程序池可能由于不活动而超时(IIRC,默认值是20分钟)。当发生这种情况时,IIS进程退出,并且您的会话状态将丢失,因为它存在于内存中。

解决方案是切换到基于SQL Server的会话状态,或者可能是状态服务器,或者禁用AppPool空闲超时(和回收,这可能导致同样的问题)。

最新更新