Подтвердить что ты не робот

Доступ к кэшу ASP.NET из отдельного потока?

Обычно у меня есть статический класс, который читает и записывает на HttpContext.Current.Cache

Однако после добавления потоков в мой проект, все потоки получают нулевые ссылочные исключения при попытке получить этот объект.

Есть ли другой способ доступа к нему, обходные решения или другой кеш, который я могу использовать?

4b9b3361

Ответ 1

Сам объект System.Web.Cache является потокобезопасным.

Проблема заключается в том, как получить ссылку на нее так, как это работает в вашем приложении. HttpContext.Current возвращает значение null, если оно не вызвано в потоке, обрабатывающем запрос ASP.NET. Альтернативный способ получить Cache - через статическое свойство System.Web.HttpRuntime.Cache. Это позволит избежать проблем с HttpContext.

Ответ 2

Если ваш проект является проектом ASP.NET, он был многопоточным даже до того, как вы добавили потоки.

Проверьте, не имеет ли значение HttpContext.Current значение null перед ссылкой HttpContext.Current.Cache.

Также отправьте полное исключение, которое вы получаете, и покажите нам код, который ссылается на кеш.