zoukankan      html  css  js  c++  java
  • HttpContext.Current.Session为null

    我们在一个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,因为处理他们的线程不是当前线程(为处理请求产生线程)

  • 相关阅读:
    PHP的pcntl进程控制之pcntl_wait
    初探PHP多进程
    php是单进程语言,但是也有办法支持多进程
    PHP中pack、unpack的详细用法
    php的几种运行模式
    PHP多进程用例--swoole和pcntl
    MySQL临时表
    centos-6.4 yum EPEL
    关于android上dpi/screen-size的厘清解释
    android studio在windows上设置git/ssh
  • 原文地址:https://www.cnblogs.com/come-on-come-on/p/8401259.html
Copyright © 2011-2022 走看看