从单独的线程访问ASP.NET缓存?

时间:2010-03-13 00:12:54

标签: c# asp.net caching

通常我有一个读写HttpContext.Current.Cache

的静态类

但是,自从向项目添加线程后,线程在尝试检索此对象时都会获得空引用异常。

我可以使用其他任何方式访问它,变通办法或其他缓存吗?

2 个答案:

答案 0 :(得分:36)

System.Web.Cache对象本身是线程安全的。

问题是如何以适用于整个应用程序的方式获取对它的引用。 HttpContext.Current返回null,除非在处理ASP.NET请求的线程上调用它。获取Cache的另一种方法是通过静态属性System.Web.HttpRuntime.Cache。这样可以避免HttpContext

出现问题

答案 1 :(得分:2)

如果您的项目是ASP.NET项目,那么即使在“添加线程”之前它也是多线程的。

在引用HttpContext.Current之前检查HttpContext.Current.Cache是否为非空。

另外,请发布您收到的完整例外情况,并向我们展示引用缓存的代码。