Session 一直都在使用 也没有发现过什么异常 今天一个程序 需要在Session_End() 事件中 发现异常故查找资料并做了以下测试:
前提是 :
在 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事件
分享到:
相关推荐
### ASP.NET中Session对象模式剖析 #### 摘要 在基于ASP.NET的应用程序中,为了维护复杂的交互式服务和程序中的用户会话状态,开发人员通常会利用内置的Session对象来实现。本文旨在深入探讨Session对象的不同模式...
在ASP.NET中,Session的实现主要依赖于以下几个核心组件: 1. **HttpSessionState**:这是ASP.NET中用于管理会话状态的对象,它存储和检索特定于用户会话的数据。每个用户的会话都有一个独立的SessionState实例,...
"详解ASP.NET中Session的用法" Session 对象是 ASP.NET 中的一个重要组件,用于存储用户之间的变量,以便在用户访问不同的页面时,应用程序可以记住用户的首选项和状态。下面是 Session 对象的详细解释: 基本...
在ASP.NET web应用程序开发中,Session、Application和Cookie是三种常用的状态管理机制,它们用于在客户端和服务器之间存储和共享数据。理解并有效地利用这些机制对于构建动态、交互性强的Web应用至关重要。 **...
ASP.NET 的 Session 详解 Session 模型简介 Session 是什么呢?简单来说就是服务器给客户端的一个编号。当一台 WWW 服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。 当每个用户首次与这台 WWW ...
### 在ASP.NET中使用Session常见问题集锦 #### Session为何会丢失? 在ASP.NET应用程序中,用户的状态(Session)有时会出现丢失的情况。这种情况的发生可能是由于多种原因造成的,比如应用程序池的回收、Session...
例如,在登录功能中,通常会将用户的用户名存储在Session中,以便在后续的页面中访问。 以下是一个简单的例子: 1. 在.aspx页面中,你可以添加一个文本框控件来输入用户名,设置`runat="server"`属性,这样可以在...
在后台应用程序中设置:Session.Timeout = 1; 注意:1、此方法可以设置在一个公共的页面中,然后直接调用即可。 2、时间是以分钟为单位的 方法二: 在Web.config中设置: 在<system></system>中写入...
在 ASP.NET 开发中,Session 是基于 Cookie 的,客户端在第一次与服务器建立会话时,会分配给客户端一个随机的 sessionId,並存于客户端 Cookie 中,然后在之后的请求中,会带上这个 Cookie,如果在客户端找不到这样...
在ASP.NET中,Session是一种用于跨页面请求保持用户状态的技术,它允许开发人员在服务器端存储用户特定的信息。然而,默认情况下,Session数据是存储在内存中的,这可能会导致一些问题,比如当应用程序需要处理大量...
当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一...
ASP.NET是一种基于微软.NET框架的Web应用程序开发平台,它提供了丰富的功能和工具,使得开发者能够构建动态、数据驱动的网站。在ASP.NET中,Session是一个关键的特性,它用于存储用户在浏览网页过程中的状态信息,...
ASP.NET中的Session是Web开发中一个关键的概念,它主要用于在用户的不同请求之间保持状态信息。以下是对Session原理和应用的详细解释: 1. **Session原理**:当用户首次访问网站时,服务器创建一个新的Session对象...
标题提到的"asp.net 用sqlserver 实现session共享 (100%成功)",就是一种将ASP.NET的Session存储在SQL Server数据库中的解决方案,这通常被称为State Server或SQL Server Mode的Session管理方式。这种方法允许不同...
- **查看购物车**:用户可以查看购物车内容,服务器根据Cookie或Session中的数据渲染页面。 - **修改数量**:用户可以调整购物车内商品的数量,服务器需要相应地更新存储的数据。 - **删除商品**:用户移除商品时...
ASP.NET中的Session是Web应用程序中一种非常重要的状态管理机制,它允许开发者在多个网页之间保持用户的特定信息。Session主要用于解决HTTP协议无状态的问题,确保用户在浏览网站时能维持其个性化设置、购物车数据或...
这通常是由于客户端没有正确地在后续请求中发送ASP.NET_SessionId,导致服务器无法识别会话。 解决这个问题的关键在于管理客户端的Cookie容器。在.NET Framework中,`System.Net.CookieContainer`类用于存储和管理...
ASP.NET中的会话(Session)是Web开发中一个重要的概念,它允许开发者在用户的不同页面请求之间保持数据。本文将详细讲解ASP.NET中会话的应用,帮助你理解其工作机制。 一、什么是会话(Session)? 在Web应用程序...
例如,如果你正在构建一个购物车应用,你可以将用户添加到购物车的商品信息存储在Session中,这样即使用户浏览其他页面,购物车内容也不会丢失。 Session的使用方法很简单。在代码中,你可以通过`Session["Key"] = ...
详细介绍.net 项目session存入mysql数据库,有完整demo 参考地址: http://www.codeproject.com/Articles/633199/Using-MySQL-Session-State-Provider-for-ASP-NET