上下文:.Net 3.5、C#
我希望在我的控制台应用程序中具有缓存机制。
我不想重新发明轮子,而是想使用 System.Web.Caching.Cache(这是最终决定,我不能使用其他缓存框架,不要问为什么) .
但是,看起来 System.Web.Caching.Cache 应该只在有效的 HTTP 上下文中运行。我的非常简单的代码片段如下所示:
using System;
using System.Web.Caching;
using System.Web;
Cache c = new Cache();
try
{
c.Insert("a", 123);
}
catch (Exception ex)
{
Console.WriteLine("cannot insert to cache, exception:");
Console.WriteLine(ex);
}
结果是:
cannot insert to cache, exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Web.Caching.Cache.Insert(String key, Object value) at MyClass.RunSnippet()
很明显,我在这里做错了什么。有什么想法吗?
<小时/>更新:对大多数答案+1,通过静态方法获取缓存是正确的用法,即 HttpRuntime.Cache
和 HttpContext.Current.Cache
。谢谢大家!
最佳答案
Cache 构造函数的文档表明它仅供内部使用。要获取 Cache 对象,请调用 HttpRuntime.Cache,而不是通过构造函数创建实例。
关于.net - 如何在控制台应用程序中使用 System.Web.Caching.Cache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1037695/