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