首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET MVC中禁用会话状态?

如何在ASP.NET MVC中禁用会话状态?
EN

Stack Overflow用户
提问于 2009-05-19 20:28:05
回答 3查看 24.3K关注 0票数 77

我希望有一个非常轻量级的ASP.NET MVC站点,其中包括删除尽可能多的常用HttpModules和禁用会话状态。然而,当我尝试这样做时,我得到了以下错误:

The SessionStateTempDataProvider requires SessionState to be enabled.

我已经在web.config中禁用了会话状态:

代码语言:javascript
复制
<sessionState mode="Off" />

我知道ASP.NET MVC对TempData使用会话状态,但我不需要/不想要TempData --我只想禁用会话状态。帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-19 20:40:47

你可以制作你自己的ControllerFactory和DummyTempDataProvider。如下所示:

代码语言:javascript
复制
public class NoSessionControllerFactory : DefaultControllerFactory
{
  protected override IController GetControllerInstance(Type controllerType)
  {
    var controller = base.GetControllerInstance(controllerType);
    ((Controller) controller).TempDataProvider = new DummyTempDataProvider();
    return controller;
  }
}


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

  public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
  {
  }
}

然后你只需要在应用程序启动时注册控制器工厂-例如,你可以在global.asax中这样做:

代码语言:javascript
复制
ControllerBuilder.Current.SetControllerFactory(new NoSessionControllerFactory());
票数 48
EN

Stack Overflow用户

发布于 2009-08-28 15:40:36

如果需要对简单字符串使用TempData,可以使用MvcFutures http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471中的CookieTempDataProvider。

票数 6
EN

Stack Overflow用户

发布于 2009-08-28 23:44:30

根据布拉德·威尔逊的说法,这个问题已经在MVC2预览版1中得到了解决。参见herehere

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/884852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档