今天看看MVC来源:
public class MvcHandler:IHttpHandler,IRequiresSessionState
为什么需要SessionState?是不是MVC试图做一些RESTful?
我知道在MVC中使用会话状态的原因是为了传输一些数据(不记得术语但会话状态可以用其他媒介代替)。我认为我的真正问题是:
为什么我不能编写MVC应用程序并指定并可以选择完全关闭会话状态?
答案 0 :(得分:3)
因为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();
}
这应该允许您禁用会话状态。