【问题标题】:ASP .Net & SessionStateASP .Net 和会话状态
【发布时间】:2009-02-26 03:20:29
【问题描述】:

今天看MVC源码:

公共类 MvcHandler : IHttpHandler, IRequiresSessionState

为什么需要 SessionState? MVC 不是在尝试做一些 RESTful 的事情吗?

我知道在 MVC 中使用会话状态的原因是为了传输一些数据(不记得这个术语,但会话状态可以用其他媒介代替)。我认为我真正的问题是:

为什么我不能编写 MVC 应用程序并指定并选择完全关闭会话状态?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    因为 TempData 需要它。 TempData 与 ViewData 类似,只是它会返回视图并返回一次。为此,它需要一个 cookie。

    有一种方法可以通过创建一个虚拟对象来绕过它,我只是不记得如何了。

    找到了,感谢Kigg

    public class EmptyTempDataProvider : ITempDataProvider
    {
        public IDictionary<string, object> LoadTempData(ControllerContext controllerContext)
        {
            return new Dictionary<string, object>();
        }
    
        public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
        {
        }
    }
    

    然后您必须创建一个基本控制器并在创建其他控制器时从它派生。

    protected BaseController()
    {
        TempDataProvider = new EmptyTempDataProvider();
    }
    

    这应该允许您禁用会话状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 2014-08-24
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多