ThreadStaticAttribute in ASP.NET
我有一个组件需要在每个线程前存储
我想用
经过一些研究,我发现ScottHanselman的这篇博客文章说在ASP.NET中使用
然而,大多数评论(在帖子下面)都不同意斯科特写的观点,他说一个请求总是在一个线程中运行,而另一个请求不同时使用该线程。我也相信这一点,但我想对你们这里的专家有一些看法。
不,斯科特是对的:在整个过程中,请求绝对不必在单个线程上运行。ASP.NET在这方面是线程敏捷的。只有少数几点可以发生转换,但绝对可以发生。(我自己测试过。)
您可能希望阅读这个博客帖子和这个春季论坛的主题了解更多的细节。
基本上,您应该找到一种捕获上下文的不同方法。从你的角度来看,相关信息可能在博客文章的末尾:
This is a major PITA, because as far as I can see it mean the only persistence option for 'ThreadStatic'esque behavior in ASP.Net is to use HttpContext. So for your business objects, either you're stuck with the if(HttpContext.Current!=null) and the System.Web reference (yuck) or you've got to come up with some kind of provider model for your static persistence, which will need setting up prior to the point that any of these singletons are accessed. Double yuck.
我不确定是否在ASP.NET环境中使用线程本地数据,但.NET 4.0附带了ThreadLocal类。