Доступ к кэшу ASP.NET из отдельного потока?
Обычно у меня есть статический класс, который читает и записывает на HttpContext.Current.Cache
Однако после добавления потоков в мой проект, все потоки получают нулевые ссылочные исключения при попытке получить этот объект.
Есть ли другой способ доступа к нему, обходные решения или другой кеш, который я могу использовать?
Ответы
Ответ 1
Сам объект System.Web.Cache
является потокобезопасным.
Проблема заключается в том, как получить ссылку на нее так, как это работает в вашем приложении. HttpContext.Current
возвращает значение null, если оно не вызвано в потоке, обрабатывающем запрос ASP.NET. Альтернативный способ получить Cache
- через статическое свойство System.Web.HttpRuntime.Cache
. Это позволит избежать проблем с HttpContext
.
Ответ 2
Если ваш проект является проектом ASP.NET, он был многопоточным даже до того, как вы добавили потоки.
Проверьте, не имеет ли значение HttpContext.Current
значение null перед ссылкой HttpContext.Current.Cache
.
Также отправьте полное исключение, которое вы получаете, и покажите нам код, который ссылается на кеш.