会话变量值在全局中并不总是可用.asax Session_end
本文关键字:asax Session end 变量值 全局 会话 | 更新日期: 2023-09-27 18:06:44
当用户登录到网站时,我创建了5个会话变量,其中包含一些与用户相关的值(如userid
, roleid
等)。根据存储在会话变量中的一个值,我必须更新数据库中的一条记录。为此,我在Global.asax
Session_End()
事件中编写了以下代码if (Session["UserHistoryID"] != null)
SessionUtility.UpdateDatabase(Convert.ToInt32(Session["UserHistoryID"]));
这里的问题是,当会话超时并且Session_End
触发Session
变量Session["UserHistoryID"]
是NULL
时,上述条件失败并且数据库中的记录未更新。当我在本地系统中测试时,它工作正常但当我在生产服务器中测试时,一些记录没有得到更新
为什么会发生这种情况?
谁来解释一下Session_End
到底是怎么工作的
我已经到处找过了,但是找不到解决这个问题的方法。
我认为您最早可以获得Session
值的时间是在上文essiessions和Global中提到的Application_AcquireRequestState
下。所以你可以在Global.asax
void Application_AcquireRequestState(object sender, EventArgs e)
{
if (System.Web.HttpContext.Current.Session != null)
{
if (Session["language"] != null)
{
Response.Write(Session["language"].ToString());
}
}
}
希望这能有所帮助!!
如果我为我想在Session_End事件中访问的每个会话值声明一个变量,并将会话值存储在该变量中,并在my功能中使用声明的变量,它将正常工作
void Session_End(object sender, EventArgs e)
{
int var=0;
if (Session["value"] != null)
{
var = Convert.ToInt32(Session["value"]);
UpdateToDatabase(var);
}
}