通常我有一个读写HttpContext.Current.Cache
但是,自从向项目添加线程后,线程在尝试检索此对象时都会获得空引用异常。
我可以使用其他任何方式访问它,变通办法或其他缓存吗?
答案 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
是否为非空。
另外,请发布您收到的完整例外情况,并向我们展示引用缓存的代码。