Контекст: .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
. Спасибо всем!