Как сделать per-http запрос кеша в ASP.NET 3.5 - PullRequest
22 голосов
/ 27 апреля 2010

Мы используем ASP.NET 3.5 (подход, основанный на элементах управления), и нам нужно иметь специальное хранилище только для одного http-запроса.

Кэш, относящийся к конкретным потокам, с ключами из идентификатора сеанса не будет работать, поскольку предполагается, что потоки объединены в пул, и поэтому у меня есть возможность получить данные из какого-либо предыдущего запроса в кеше, что нежелательно в моем случае. Мне всегда нужно иметь новое хранилище для каждого запроса через весь запрос.

Есть идеи, как это сделать в ASP.NET 3.5?

Ответы [ 3 ]

35 голосов
/ 27 апреля 2010

Мы использовали HttpContext.Current.Items collection для кэширования RequestScope. Хорошо работает.

5 голосов
/ 27 апреля 2010

просто чтобы уточнить, что ggonsalv имел в виду

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.items.aspx

HttpContext.Items["key"] = value;

ОБНОВЛЕНИЕ: конкретная версия mvc

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext(v=VS.100).aspx

2 голосов
/ 27 апреля 2010

Как насчет использования коллекции Context. Это позволяет обмениваться данными между всеми вашими элементами управления, но действует только для запроса.

Используйте это так context.Items ("base_url") = "default.aspx"

...