3

我已经读过我应该存储一个ObjectContextinHttpContext.Current以便ObjectContext在请求中调用的不同服务/存储库之间共享我的。我想知道在类变量上使用ObjectContext带有[ThreadStatic]属性是否安全。static这样做安全吗?每个请求都在自己的线程中处理吗?

4

2 回答 2

8

不,同一个线程中可以有多个请求,更重要的是,一个请求可以在多个线程中处理。这称为线程敏捷性,当您将内容存储在线程静态变量而不是 Context 中时,您会遇到问题:当 ASP.NET在同一个请求期间从一个线程移动到另一个线程时,HttpContext 仍然可以访问,但线程-static 变量不是。

一些包含更多信息的链接:

于 2009-11-23T18:46:00.477 回答
3

单个线程用于处理请求,在现有请求完成之前,其他请求不会使用该线程。但是,您需要考虑如何确保即使发生异常情况也处理上下文对象中的项目。一旦线程完成了一个请求,无论出于何种原因,它将被重新用于处理其他请求。您不希望上一个请求中的状态泄漏到下一个请求中。

于 2009-11-23T18:51:42.880 回答