C# 无法防止asp.net中的会话过期

C# 无法防止asp.net中的会话过期,c#,asp.net,session,iis,timeout,C#,Asp.net,Session,Iis,Timeout,我们有一个asp.net应用程序,它使用 1) 进程内状态管理和 2) 表单身份验证 会话状态和窗体身份验证超时都已设置为20分钟。 表单身份验证已设置为true <system.WebServer> <handlers> <remove name="KeepAlive" /> <add name="KeepAlive" verb="GET" path="AJAXKeepAlive.ashx" type="I

我们有一个asp.net应用程序,它使用

1) 进程内状态管理和

2) 表单身份验证

会话状态和窗体身份验证超时都已设置为20分钟。 表单身份验证已设置为true

<system.WebServer>
  <handlers>
     <remove name="KeepAlive" />
     <add name="KeepAlive" verb="GET" path="AJAXKeepAlive.ashx" 
          type="IRCoder.AJAXKeepAlive" preCondition="integratedMode"/>
  </handlers>
</system.WebServer>

<authentication mode="Forms">
     <forms name=".Auth" loginUrl="Login.aspx" slidingExpiration="true" 
             protection="All" timeout="20"></forms>
</authentication>
<sessionState cookieName="ssid" mode="InProc" cookieless="false" timeout="20"/>



该页面中还有其他答案,但有效的答案是删除旧ID,而不是释放旧ID。同样,只从存储中删除项目,而不释放它

你以前看过这一页吗?也许有一些东西对您可能有帮助:@AntiqTech,该链接基本上说是更新应用程序池超时。我已经试过了。我能够确定问题所在。以前我们实现了一个代码,在用户登录后重新生成会话id,这是导致问题的原因。我已将代码还原为常量会话id的旧版本。会话正常工作。@AntiqTech非常感谢您在这方面花费的时间。现在,我需要弄清楚如何让新生成的会话id正常工作..我完全解决了这个问题。请使用下面链接中的c代码:
public class AJAXKeepAlive : IHttpHandler, IRequiresSessionState
{        
    public void ProcessRequest(HttpContext context)
    {
        context.Session["KeepAlive"] = DateTime.Now;            
    }

    public bool IsReusable
    {
       get
       {
          return false;
       }
     }
}

In Master page:
$.get("<%=ResolveUrl("~/")%>AJAXKeepAlive.ashx");