小弟有个问题,一直不解比如我写了一个Default.aspx,对应的CodeBehind是Default:System.Web.UI.Page,那么对于用户的每一次请求,该类都会实例化一次么?还是像Tomcat一样,有一个线程池,里面实例化的类会在不同请求间复用。这个问题就牵扯到了线程安全的问题,如果asp.net像servlet那样,我就不能在CodeBehind中定义一个public int Var(这个Var跟用户请求相关),然后在前台的.aspx代码中引用了,因为这样做就线程不安全了。。恳请各位解答,谢谢!

解决方案 »

  1.   

    缓存并不能适用于所有情况,我想知道asp.net的一个页面类的生命周期只有一个请求么。。
      

  2.   

    我的理解是的,每次Request,Codebehind中的页面类都会被实例化一次。
      

  3.   

    是会被实例化一次,WEBFORM中,每个页相当一个类,就是这样的,
      

  4.   

    你的理解是正确的。但是asp.net所做的又不仅这些,它还会根据request重建那些服务器控件的状态和属性值。
      

  5.   

    每次请求都是全新的请求,这么理解的话是需要重新的去实例化的。
    Tomcat的线程池也是会重新实例化的吧,一旦请求结束就不会记录上次请求的数据。
    这个线程池的就是控制访问用户数量的,如果要比较iis和它比较合适
      

  6.   

    详解asp.net 请求处理机制 参见我的博客
    http://www.cnblogs.com/cilence/archive/2012/05/28/2520712.html