C# 无法防止asp.net中的会话过期
我们有一个asp.net应用程序,它使用 1) 进程内状态管理和 2) 表单身份验证 会话状态和窗体身份验证超时都已设置为20分钟。 表单身份验证已设置为trueC# 无法防止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
<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");