请参阅此链接。这是一个回答,我目前正在帮助另一个用户。这应该向您展示如何在用户登录后启动会话。
编辑:不知道为什么投反对票,但这里是代码。
更改每个表单身份验证和 sessionState 的超时,如下所示。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" defaultUrl="~/Dashboard.aspx" timeout="60"/>
</authentication>
<sessionState timeout="60" mode="InProc" cookieless="false" />
然后,将其放入页面加载下的 Site.Master.cs 中。
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
// Handle the session timeout
string sessionExpiredUrl = Request.Url.GetLeftPart(UriPartial.Authority) + "/DealLog/Account/SessionExpired.aspx";
StringBuilder script = new StringBuilder();
script.Append("function expireSession(){ \n");
script.Append(string.Format(" window.location = '{0}';\n", sessionExpiredUrl));
script.Append("} \n");
script.Append(string.Format("setTimeout('expireSession()', {0}); \n", this.Session.Timeout * 60000)); // Convert minutes to milliseconds
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "expirescript", script.ToString(), true);
}
只有在用户通过身份验证时,会话才会过期。用户登录,变为非活动状态,然后会话超时。一旦超时,就会转到 SessionExpired 页面。在会话过期页面上,放置
FormsAuthentication.SignOut();
在页面加载中,因此它会注销用户。然后,您可以从那里设置重定向。Authentication 和 SessionState 超时都以分钟为单位。60 = 1 小时。
编辑 2:看起来我的答案中链接的问题的用户已被用户删除。对此感到抱歉。希望这会有所帮助。