HttpContext.Current.Session为null
2018-02-01 21:00
155 查看
我们在一个ASP.NET程序中,为什么可以到处访问HttpContext.Current呢?
因为ASP.NET会为每个请求分配一个线程(也是当前线程),这个线程会执行我们的代码来生成响应结果, 即使我们的代码散落在不同的地方(类库),线程仍然会执行它们, 所以我们可以在任何地方访问System.Web.HttpContext.Current获取到与当前请求相关的HttpContext对象, 这些代码是由同一个线程来执行,所以得到的HttpContext引用也就是我们期待的那个与请求相关的对象。
当前线程是什么意思?
我的理解是:
1. 当前线程是指与当前请求相关的线程。
2. 在ASP.NET程序中,有些线程并非总是与请求相关。
虽然在ASP.NET程序中,几乎所有的线程都应该是为响应请求而运行的,但是还有一些线程却不是为了响应请求而(产生)运行的,
例如:
1. 定时器的回调。
2. Cache的移除通知。
3. APM模式下异步完成回调。
4. 主动创建线程或者将任务交给线程池来执行。
5.异步任务Task
至于什么APM网上资料很多,这里我就不说明了
在这些情况下使用System.Web.HttpContext.Current获取HttpContext对象得到的结果都是null,因为处理他们的线程不是当前线程(为处理请求产生线程)
因为ASP.NET会为每个请求分配一个线程(也是当前线程),这个线程会执行我们的代码来生成响应结果, 即使我们的代码散落在不同的地方(类库),线程仍然会执行它们, 所以我们可以在任何地方访问System.Web.HttpContext.Current获取到与当前请求相关的HttpContext对象, 这些代码是由同一个线程来执行,所以得到的HttpContext引用也就是我们期待的那个与请求相关的对象。
当前线程是什么意思?
我的理解是:
1. 当前线程是指与当前请求相关的线程。
2. 在ASP.NET程序中,有些线程并非总是与请求相关。
虽然在ASP.NET程序中,几乎所有的线程都应该是为响应请求而运行的,但是还有一些线程却不是为了响应请求而(产生)运行的,
例如:
1. 定时器的回调。
2. Cache的移除通知。
3. APM模式下异步完成回调。
4. 主动创建线程或者将任务交给线程池来执行。
5.异步任务Task
至于什么APM网上资料很多,这里我就不说明了
在这些情况下使用System.Web.HttpContext.Current获取HttpContext对象得到的结果都是null,因为处理他们的线程不是当前线程(为处理请求产生线程)
相关文章推荐
- HttpContext.Current.Session为null的问题
- System.Web.HttpContext.Current.Session NullReference错误
- HttpContext.Current.Session为null的问题
- HttpContext.Current.Session 为null
- 一般处理程序中 httpContext.current.session为null的解决办法
- System.Web.HttpContext.Current.Session为NULL解决方法
- 在IIS7下使用HttpModule的过程中遇到很诡异的问题,HttpContext.Current.User为NULL
- httpContext.Current.Session[值] 取值的问题
- System.Web.HttpContext.Current.Session获取值出错
- System.Web.HttpContext.Current.Session为NULL值的问题?
- 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)
- 异步 HttpContext.Current 为空null 另一种解决方法
- 线程Thread调用时System.Web.HttpContext.Current为NULL
- System.Web.HttpContext.Current.Session为NULL值的问题?
- System.Web.HttpContext.Current.Session获取值出错
- ashx中使用HttpContext.Current.Session ,出现未将对象引用设置到实例
- WCF Service中HttpContext.Current为null的解决办法
- 问题:HttpContext.Current.Session;结果:Session与HttpContext.Current.Session到底有什么区别呢?
- 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)