在Handler中使用Session
来源:互联网 发布:将字符串转换为json 编辑:程序博客网 时间:2024/04/30 03:42
在Handler中使用Session的时候是从HttpContext中去取的,那么用Reflector直接去找到HttpContext,看他是如何做到的,把整个类用Reflector Disassembler出来,直接搜索关键字IRequiresSessionState
非常关键的代码 this._handler is IRequiresSessionState 和 this._handler is IReadOnlySessionState ,我们再看关于IRequiresSessionState的说明:指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。而this.RequiresSessionState和this.ReadOnlySessionState默认都是false的,也就是说默认是不能访问Session的数据,当你继承IRequiresSessionState或IReadOnlySessionState之后访问权被打开!至于在哪里打开,有兴趣的朋友可以继续深究一下,在SessionStateModule这个类里面有更深入的答案,他是通过访问这个类的属性来判断是否需要打开Session的访问权的。
public IHttpHandler Handler
{
get
{
return this._handler;
}
set
{
this._handler = value;
this.RequiresSessionState = false;
this.ReadOnlySessionState = false;
this.InAspCompatMode = false;
if (this._handler != null)
{
if (this._handler is IRequiresSessionState)
{
this.RequiresSessionState = true;
}
if (this._handler is IReadOnlySessionState)
{
this.ReadOnlySessionState = true;
}
Page page = this._handler as Page;
if ((page != null) && page.IsInAspCompatMode)
{
this.InAspCompatMode = true;
}
}
}
}
非常关键的代码 this._handler is IRequiresSessionState 和 this._handler is IReadOnlySessionState ,我们再看关于IRequiresSessionState的说明:指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。而this.RequiresSessionState和this.ReadOnlySessionState默认都是false的,也就是说默认是不能访问Session的数据,当你继承IRequiresSessionState或IReadOnlySessionState之后访问权被打开!至于在哪里打开,有兴趣的朋友可以继续深究一下,在SessionStateModule这个类里面有更深入的答案,他是通过访问这个类的属性来判断是否需要打开Session的访问权的。
public IHttpHandler Handler
{
get
{
return this._handler;
}
set
{
this._handler = value;
this.RequiresSessionState = false;
this.ReadOnlySessionState = false;
this.InAspCompatMode = false;
if (this._handler != null)
{
if (this._handler is IRequiresSessionState)
{
this.RequiresSessionState = true;
}
if (this._handler is IReadOnlySessionState)
{
this.ReadOnlySessionState = true;
}
Page page = this._handler as Page;
if ((page != null) && page.IsInAspCompatMode)
{
this.InAspCompatMode = true;
}
}
}
}
0 0
- 在Handler中使用Session
- 在Handler中使用Session
- 在asp.net handler 中 使用 session
- 在Handler中操作Session
- 在handler中读取session值
- 在类中,使用session
- 在HttpHandler中使用Session
- 在Silverlight中使用session
- 在Silverlight中使用SESSION
- 在IHttpHandler中使用SESSION
- 在Silverlight中使用SESSION
- 在webservice中使用session
- 在Silverlight中使用SESSION
- Android Handler/Looper/MessageQueue 在新线程中使用Handler
- 可以在Service中使用handler么?
- 在工作线程(WorkerThread)中使用Handler
- 利用Handler在WorkerThread中使用Looper
- 在工作线程(WorkerThread)中使用Handler
- 关于循环设计
- 方法中的if与return
- poj1321
- 真队魂 : 杰拉德!!!
- 循环语句中的if else 结构里面如何使用break语句?
- 在Handler中使用Session
- poj 1948 Triangular Pastures
- rootkit概念摘抄
- ZOJ3778 Talented Chef
- C++异常处理机制----读书笔记(上篇)
- 实现复数类中的运算符重载1
- 《算法导论》笔记 第9章 9.2以期望线性时间做选择
- 使用filter作为控制器的MVC
- Codeforces Round #241 (Div. 2) B