Доступ к кешу ASP.NET из отдельного потока? - PullRequest
17 голосов
/ 13 марта 2010

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

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

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

Ответы [ 2 ]

36 голосов
/ 13 марта 2010

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

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

2 голосов
/ 13 марта 2010

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

Проверьте, не является ли HttpContext.Current ненулевым, прежде чем ссылаться на HttpContext.Current.Cache.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...