gpt4 book ai didi

c# - 重定向到 Session_end 事件的另一个页面

转载 作者:可可西里 更新时间:2023-11-01 09:05:17 26 4
gpt4 key购买 nike

我想在 session 超时时自动重定向到登录页面。

在 web.config 文件中,我有以下代码

<configuration>
<system.web>
<sessionState mode="InProc" timeout="1"/>
</system.web>
</configuration>

在 Global.asax 文件中-

protected void Session_End(object sender, EventArgs e)
{
Response.Redirect("LoginPage.aspx");
}

但超时后,我收到以下错误:

HttpException was unhandled by user code.

Response is not available in this context.

有解决这个问题的线索吗?

最佳答案

session 结束时调用 Session_End - 通常在最后一次请求后 20 分钟(例如,如果浏览器处于非事件状态或关闭)。
由于没有请求,因此也没有响应。

如果没有事件 session ,我建议在 Application_AcquireRequestState 中进行重定向。请记住通过检查当前 url 来避免循环。

编辑:我不喜欢 .Nets 内置身份验证,示例在 Global.asax 中:

    protected void Application_AcquireRequestState(object sender, EventArgs e)
{
try
{
string lcReqPath = Request.Path.ToLower();

// Session is not stable in AcquireRequestState - Use Current.Session instead.
System.Web.SessionState.HttpSessionState curSession = HttpContext.Current.Session;

// If we do not have a OK Logon (remember Session["LogonOK"] = null; on logout, and set to true on logon.)
// and we are not already on loginpage, redirect.

// note: on missing pages curSession is null, Test this without 'curSession == null || ' and catch exception.
if (lcReqPath != "/loginpage.aspx" &&
(curSession == null || curSession["LogonOK"] == null))
{
// Redirect nicely
Context.Server.ClearError();
Context.Response.AddHeader("Location", "/LoginPage.aspx");
Context.Response.TrySkipIisCustomErrors = true;
Context.Response.StatusCode = (int) System.Net.HttpStatusCode.Redirect;
// End now end the current request so we dont leak.
Context.Response.Output.Close();
Context.Response.End();
return;
}
}
catch (Exception)
{

// todo: handle exceptions nicely!
}
}

关于c# - 重定向到 Session_end 事件的另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565791/

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