HttpContext: 获取和设置与当前线程相关联的主机上下文
在Asp.net程序中,Asp.net会为每一个请求分配一个线程,这个线程会执行代码来生成响应结果,即使我们的代码散落在不同的 地方(类库),线程仍然会执行它们,所以,我们可以在任何地方通过HttpContext.Current来获取与当前请求相关的HttpContext对象,由于这些代码是由同一个线程执行的,所以HttpContext引用就是与当前请求相关的对象
HttpApplication有一个内部方法OnThreadEnter(),Asp.net在调用外部代码前都会调用这个方法来切换HttpContext
HttpContext是与当前线程相关,当前线程就是指与当前请求相关的线程,虽然在Asp.net中几乎所有的线程都是为了响应请求而运行的,但是还有一些线程与当前请求无关
1 定时器的回调,2 Cache移除通知,3 ATM模式下异步完成回调,4 主动创建线程或者将任务交由线程池执行,在上述四种情况下HttpContext值为NULL
Asp.net线程:当前线程是一个与HttpContext相关的线程,由于线程与HttpContext相关,所以它正在处理发送给Asp.net的请求。
所以正确使用HttpContext的方法是:
HttpContext context= HttpContext.Current;
if( context != null )
{
// 在这里访问与请求有关的东西。
}