gpt4 book ai didi

asp.net - 检查 session 是否超时

转载 作者:行者123 更新时间:2023-12-04 00:23:18 25 4
gpt4 key购买 nike

这是除 EndSession.aspx 之外的所有页面的基类

override protected void OnInit(EventArgs e)  {  
base.OnInit(e);

if (Context.Session != null)
{
//check the IsNewSession value, this will tell us if the session has been reset.
//IsNewSession will also let us know if the users session has timed out
if (Session.IsNewSession)
{
//now we know it's a new session, so we check to see if a cookie is present
string cookie = Request.Headers["Cookie"];
//now we determine if there is a cookie does it contains what we're looking for
if ((null != cookie) && (cookie.IndexOf("ASP.NET_SessionId") >= 0) )//&& !Request.QueryString["timeout"].ToString().Equals("yes"))
{
//since it's a new session but a ASP.Net cookie exist we know
//the session has expired so we need to redirect them

Response.Redirect("EndSession.aspx?timeout=yes");
}
}
}
}

但是在 EndSession 上,我尝试导航回,比如说 default.aspx,然后上面的代码只是重定向回 EndSession.aspx。

所以为了更好地澄清:
第 1 步:转到 mypage.aspx
第二步:WAITING超时
第 3 步:尝试离开
第 4 步:重定向到 EndSession.aspx
第 5 步:尝试离开
第 6 步:转到设置 4

Setp 6 实际上应该能够离开...

(如果需要,请要求进一步说明)

有任何想法吗?

谢谢!!!

最佳答案

我摆脱了我最初拥有的基础页面。

把它放在 Global.asax 的 Session_Start 中

void Session_Start(object sender, EventArgs e) 
{
string cookie = Request.Headers["Cookie"];
// Code that runs when a new session is started
if ((null != cookie) && (cookie.IndexOf("ASP.NET_SessionId") >= 0))//&& !Request.QueryString["timeout"].ToString().Equals("yes"))
{
if(Request.QueryString["timeout"] == null || !Request.QueryString["timeout"].ToString().Equals("yes"))
Response.Redirect("Default.aspx?timeout=yes");
}
}

把它放在 Defualt.aspx 页面上:
 if (!IsPostBack)
{
if (Request.QueryString["timeout"] != null && Request.QueryString["timeout"].ToString().Equals("yes"))
{
Response.Write("<script>" +
"alert('Your Session has Timedout due to Inactivity');" +
"location.href='Default.aspx';" +
"</script>");
}
}

即使在 Default.aspx 页面上发生超时,此解决方案也有效

我使用的解决方案的讨论发布在这里: How to stop basepage from recursivly detecting session timeout

关于asp.net - 检查 session 是否超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3425230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com