.net - 如何在控制台应用程序中使用 System.Web.Caching.Cache?

标签 .net caching console-application httpcontext

上下文:.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.CacheHttpContext.Current.Cache。谢谢大家!

最佳答案

Cache 构造函数的文档表明它仅供内部使用。要获取 Cache 对象,请调用 HttpRuntime.Cache,而不是通过构造函数创建实例。

关于.net - 如何在控制台应用程序中使用 System.Web.Caching.Cache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1037695/

相关文章:

.net - 没有主窗体的 Winforms 应用程序 - 对话框未显示在顶部

java - 使用 Java 在控制台中显示动态输出

php - 使用 Memcached/Elasticache 的 Nginx 全页缓存并使用 PHP 进行清除

python - 使 `functools.cached_property` 的缓存失效

vb.net - 如何防止 VB.NET 中的控制台窗口被调整大小?

c# - 在不总是相同的字符串中间添加一个字符

c# - 如何在 .NET 库中读取从 VB6 IDE 传递的命令行参数?

.net - 生成条形码作为图像,并将其嵌入到 rdlc 中

.net - 如何从PowerShell获取文件的实际磁盘大小?

android - picasso 从不缓存到模拟器上的磁盘