每个控制器/操作方法启用/禁用会话状态

时间:2010-02-12 10:00:08

标签: asp.net-mvc caching session-state zeus

我们正在构建一个ASP.NET MVC应用程序,它将部署在支持缓存等硬件负载均衡器之后。

我们的建议是手动定义负载均衡器应缓存哪些URL模式。这对我们来说是一个非常简单的过程,因为我们的“目录”页面是相对静态的,然后是“订单”页面,而不是。

必须避免在缓存页面上使用会话状态,因为负载均衡器会缓存整个响应 - 这包括发送的任何Cookie。

理想情况下,会有一个属性可以应用于允许选择性使用会话状态的控制器或操作方法,但似乎没有。我意识到,如果使用离开“会话区”,这样的方法会导致会话丢失 - 这很好。

除了重新实现整个ASP.NET MVC HTTP控制器......有什么建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:51)

现在将其从Futures转移到MVC3。有ControllerSessionState属性(显然将在MVC3的最终版本中命名为SessionState),可以应用于控制器,如下所示:

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

(但在RC版本中,您必须使用ControllerSessionState

答案 1 :(得分:4)

这包含在MVC 2期货中。有关详细信息,请参阅http://blogs.msdn.com/rickandy/archive/2009/12/17/session-less-mvc-controller.aspx