Session 一直都在使用 也没有发现过什么异常 今天一个程序 需要在Session_End() 事件中 发现异常故查找资料并做了以下测试:
前提是 :
在 Web.config 中将 sessionstate 模式设置为 “InProc” 时, 才会触发Session_End 事件
在程序页面中使用Session:
在.cs 页面中获取的方法为
在Global.ascx 文件中Session_End() 事件中调用
在页面中已经为Session["user_id"]赋过值
但是执行结果为 userid等于123 但是CSUserid则报错(该对象在上下文中无效)
结论:在Cs文件中只能通过访问System.Web.HttpContext.Current.Session[name]来获取Session值(一家之言 不知道是否有别的方法可以获取到Session并能被global文件所调取,如有异议,欢迎斧正啊) 可是在Global文件中无法访问到System.Web.HttpContext命名空间 当然那些页面级的命名空间也无法访问了 比如最常用的Response ,Request。this.Session["user_id"]这样就直接可以获取到值
在做一点补充啊:
在做这个测试过程中也用到了Session_Start事件 它与Session_End
当一个网站的所有Session变量全部过期 Session_End 事件触发 Session_Start 则是该网站内如果所有的Session全部过期活着根本没有Session变量时当第一个Session变量建立时触发Session_Start事件 (只有在建立第一个时才触发啊) 如果有多个则之后的Session变量创建都不会触发Session_Start事件
前提是 :
在 Web.config 中将 sessionstate 模式设置为 “InProc” 时, 才会触发Session_End 事件
在程序页面中使用Session:
System.Web.HttpContext.Current.Session["user_id"] = UserID在.cs 页面中获取的方法为
public static int GetLoginUserID()
{
// 未登录
if (System.Web.HttpContext.Current.Session["user_id"] != null)
{
return Convert.ToInt32(System.Web.HttpContext.Current.Session["user_id"]);
}
else{
return -1;
}
}在Global.ascx 文件中Session_End() 事件中调用
protected void Session_End(object sender, EventArgs e)
{
string userid= this.Session["user_id"].ToString();
string CSUserid = GetLoginUserID();
}
在页面中已经为Session["user_id"]赋过值
System.Web.HttpContext.Current.Session["user_id"]=123;但是执行结果为 userid等于123 但是CSUserid则报错(该对象在上下文中无效)
结论:在Cs文件中只能通过访问System.Web.HttpContext.Current.Session[name]来获取Session值(一家之言 不知道是否有别的方法可以获取到Session并能被global文件所调取,如有异议,欢迎斧正啊) 可是在Global文件中无法访问到System.Web.HttpContext命名空间 当然那些页面级的命名空间也无法访问了 比如最常用的Response ,Request。this.Session["user_id"]这样就直接可以获取到值
在做一点补充啊:
在做这个测试过程中也用到了Session_Start事件 它与Session_End
当一个网站的所有Session变量全部过期 Session_End 事件触发 Session_Start 则是该网站内如果所有的Session全部过期活着根本没有Session变量时当第一个Session变量建立时触发Session_Start事件 (只有在建立第一个时才触发啊) 如果有多个则之后的Session变量创建都不会触发Session_Start事件
探讨Session值跨文件访问问题
本文通过实验展示了在ASP.NET应用中,如何在不同页面间安全地访问Session值,并指出仅能通过`System.Web.HttpContext.Current.Session[name]`方式获取Session值。详细介绍了Session状态管理、Session_End和Session_Start事件,以及它们在页面生命周期中的作用。
1258

被折叠的 条评论
为什么被折叠?



