【问题标题】:Enable / disable session state per controller / action method启用/禁用每个控制器/操作方法的会话状态
【发布时间】:2011-01-16 02:16:42
【问题描述】:

我们正在构建一个 ASP.NET MVC 应用程序,该应用程序将部署在支持缓存等功能的硬件负载平衡器后面。

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

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

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

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

提前致谢。

【问题讨论】:

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


【解决方案1】:

这包含在 MVC 2 Futures 中。请参阅http://blogs.msdn.com/rickandy/archive/2009/12/17/session-less-mvc-controller.aspx 了解更多信息。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 2023-03-14
      相关资源
      最近更新 更多