gpt4 book ai didi

c# - 在 Session_End 中访问 session 变量

转载 作者:行者123 更新时间:2023-11-30 21:19:08 25 4
gpt4 key购买 nike

你好
在我的网络应用程序中,用户正常登录网站,并且他们在数据库中的用户表中标记为 Session_End 中的在线用户,我想注销他们在 Session_End 中,我无权访问 HttpContext.Current.Session 或仅 Session它们都是 null 我如何在 (Session_End) 事件中访问 session 变量。

最佳答案

如果您正在使用 InProc Session(因此会触发 Session_End 事件),您可以使用

this.Session

当您使用 global.Asax 时,Global.asax 本身会扩展 HttpApplication

来自 MSDN(http://msdn.microsoft.com/pt-br/library/system.web.httpapplication.aspx):

"This class is the base class for applications that are defined by the user in the Global.asax file."

我在 Global.asax 中创建了一个返回 Session 的方法:

public HttpSessionState GetSession()
{
//Check if current context exists
if (HttpContext.Current != null)
{
return HttpContext.Current.Session;
}
else
{
return this.Session;
}
}

所以我可以使用下面的方法@global.asax:

var x = GetSession()["key"];

编辑

但是可以生成多个应用实例来处理请求(你可以设置你想要多少个worker进程

IIS > 应用程序池 > 属性

但是对于不同的工作进程,请求可能会落在许多没有您想要的 session 信息的工作进程之一

参见 ASP.NET session state and multiple worker processes

我建议存储第一次访问和最后一次注册访问 ( Post_Authenticate event )。

此外,使用定期运行的 SQL Server 作业来检查上次访问。这样您就可以防止您的应用程序崩溃(当 Session_End 事件不会触发时)。

关于c# - 在 Session_End 中访问 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933002/

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