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

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

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

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

17
задан John Saunders 13 March 2010 в 00:50
поделиться

2 ответа

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

Перед обращением к HttpContext.Current.Cache проверьте, не является ли HttpContext.Current значением NULL.

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

2
ответ дан 30 November 2019 в 11:37
поделиться

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

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

36
ответ дан 30 November 2019 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: