所以我想知道,当(据我所知)asp.net是多线程的时,asp.net能够精确地限定静态属性的范围。

  • 有一种理论认为,ASP.NET的人员为每个请求维护一个不同的appdomain……但这似乎并不可行。
  • 另一种理论认为,.Current方法将查看当前的Thread,然后使用该方法在某个哈希表(或其他静态存储机制)中查找http上下文。

  • 无论哪种方式,它都是一种似乎非常有用的技术……我想利用它,但是绝对不想调试共享状态的错误:-/

    最佳答案

    Marc所说的最可能是您所追求的,但是ASP.NET实际上比ThreadStatic复杂得多,因为单个请求实际上可以由多个线程处理。明确地告诉执行线程要切换上下文,当然托管环境正在调度线程,并且它具有需要执行httpcontext的上下文,因此它找到一个线程,告诉线程应该在哪个上下文中运行..然后将其发送在途中。

    因此,解决方案的确不是那么可悲,因为线程静态要简单得多,而且可能需要95%的时间适合。

    09-10 03:34
    查看更多