Включить / отключить состояние сеанса для контроллера / метода действия - PullRequest
18 голосов
/ 12 февраля 2010

Мы создаем приложение ASP.NET MVC, которое будет развернуто за аппаратным балансировщиком нагрузки, который поддерживает, помимо прочего, кэширование.

Наше предложение состоит в том, чтобы вручную определить, какие шаблоны URL должны кэшироваться балансировщиком нагрузки. Это будет довольно простой процесс для нас, поскольку у нас есть «каталогные» страницы, которые являются относительно статичными, а затем «страницы заказа», которые не являются.

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

В идеале должен существовать атрибут, который можно применять к контроллерам или методам действий, который позволяет выборочно использовать состояние сеанса, но его, по-видимому, нет. Я понимаю, что такой подход приведет к потере сеансов, если использование покинет «зону сеанса» - это нормально.

Кроме повторной реализации всего HTTP-контроллера ASP.NET MVC ... есть предложения?

Заранее спасибо.

Ответы [ 2 ]

51 голосов
/ 21 ноября 2010

Теперь это перенесено из фьючерса в MVC3. Есть атрибут ControllerSessionState (по-видимому, для окончательного выпуска MVC3 он будет называться SessionState), который можно применить к контроллеру, например, так:

[SessionState(SessionStateBehavior.Disabled)]
public class MyController : Controller
{
 ...

(Но в версии RC вы должны использовать ControllerSessionState

4 голосов
/ 12 февраля 2010

Это включено в MVC 2 Futures.См. http://blogs.msdn.com/rickandy/archive/2009/12/17/session-less-mvc-controller.aspx для получения дополнительной информации.

...