有些场景下session必用,比如登陆时候的验证码。
session是httpContext下的字段。
类型是HttpSessionState。可以看到这是一个集合,并且实现了IEnumerable,实现了2种索引。
具体的存储地方,是在IHttpSessionState类型的container中。
namespace System.Web.SessionState
{
//
// 摘要:
// 提供对会话状态的值,以及会话级别设置和生存期管理方法的访问。
[DefaultMember("Item")]
public sealed class HttpSessionState : ICollection, IEnumerable
{
//
// 摘要:
// 获取或设置一个会话值通过数字索引。
//
// 参数:
// index:
// 会话值的数字索引。
//
// 返回结果:
// 存储中的指定索引处的会话状态值或 null 如果该项不存在。
public object this[int index] { get; set; }
//
// 摘要:
// 获取或设置会话值的名称。
//
// 参数:
// name:
// 会话值的键名称。
//
// 返回结果:
// 具有指定名称的会话状态值或 null 如果该项不存在。
public object this[string name] { get; set; }
//
// 摘要:
// 获取一个值,该值是嵌入在 URL 中还是存储在 HTTP cookie 的会话 ID。
//
// 返回结果:
// true 如果会话嵌入到 URL;,否则为 false。
public bool IsCookieless { get; }
//
// 摘要:
// 获取一个对象,可使用该对象同步会话状态值的集合的访问权限。
//
// 返回结果:
// 可用于同步集合访问的对象。
public object SyncRoot { get; }
//
// 摘要:
// 获取存储在会话状态集合中的所有值的键的集合。
//
// 返回结果:
// System.Collections.Specialized.NameObjectCollectionBase.KeysCollection 包含所有的会话密钥。
public NameObjectCollectionBase.KeysCollection Keys { get; }
//
// 摘要:
// 获取会话状态集合中的项数。
//
// 返回结果:
// 集合中项的数目。
public int Count { get; }
//
// 摘要:
// 获取声明的对象的集合, <object Runat="Server" Scope="Session"/> ASP.NET 应用程序文件 Global.asax
// 中的标记。
//
// 返回结果:
// System.Web.HttpStaticObjectsCollection 在 Global.asax 文件中包含对象声明。
public HttpStaticObjectsCollection StaticObjects { get; }
待续。。。