gpt4 book ai didi

asp.net - 如何阻止基本页面递归检测 session 超时

转载 作者:行者123 更新时间:2023-12-02 04:29:08 25 4
gpt4 key购买 nike

备用标题:如何在 session 超时时重定向

最终解决方案:感谢:Robin Day(尽管我测试了 Ben 的解决方案,它也有效,并且其他两个解决方案也是很好的解决方案)

我删除了原来的基本页面。

将其放入 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 页面发生超时,此解决方案也能正常工作

<小时/>

结束解决方案

我有一个检查 session 超时的基本页面。 (这就是它的全部作用)。如果 session 超时,我想重定向到主页。但是,主页也继承自该基页。

我不确定我是否解释得很好:

第 1 步:加载我的一个页面

第 2 步:停留时间超过 20 分钟(这会导致 session 超时)。

第 3 步:我点击导致回发的内容

第4步:Basepage检测超时并重定向到default.aspx

第 5 步:加载 default.aspx 时,基本页面检测到仍然存在超时,并再次尝试重定向到 default.aspx。第6步:重复第5步

粗体是不希望出现的效果...

这是基本页面代码。

using System;  
using System.Web.UI;
public class SessionCheck : System.Web.UI.Page
{
public SessionCheck() {}

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))
{
//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("Default.aspx?timeout=yes&success=no");
}
}
}
}
}

谢谢!!!

(如果您需要进一步说明,请询问)

注意:我知道如果我重定向到不是从此基页继承的页面,就会解决问题。但我不喜欢这个解决方案。

最佳答案

您可以在Global.asax中使用Session_OnStart事件吗?

每当新 session 开始时,都会触发一次。您可以在那里进行重定向。

但我认为关键是,如果您尚未进入主页,则只能重定向到主页。您只需检查 Request 对象中的 URL 即可完成此操作。

关于asp.net - 如何阻止基本页面递归检测 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3423184/

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