7

在我正在使用的 Web 应用程序中System.Web.HttpContext.Current,它代表当前的命中上下文,我想知道它是如何从任何地方访问的,直到我注意到它是一个static成员!虽然它是一个静态成员,但如果几乎同时收到两个请求,它如何保持其值。像下面这样:

#Req1----> | set the value of the static field to req1
#Req2----> | set the value of the static field to req2
#Req1      | use that static its supposed to be req2 while its req1

我是否错过了某些东西,或者其中有什么技巧或什么?

4

1 回答 1

5

这是一个非常聪明的问题!

HttpContext.Current被实现为线程局部变量。实际上,它是使用实现的,LogicalCallContext但它的行为类似于线程本地。

可以这样想:

[ThreadLocal]
public static HttpContext Current;

是的,这意味着只有主请求线程可以访问它。在您启动的其他线程上它将为空。

于 2013-03-23T12:59:55.447 回答