我想要一个非常轻量级的 ASP.NET MVC 站点,其中包括删除尽可能多的常用 HttpModule 并禁用会话状态。但是,当我尝试执行此操作时,出现以下错误:
The SessionStateTempDataProvider requires SessionState to be enabled.
我已在 web.config 中禁用会话状态:
<sessionState mode="Off" />
我知道 ASP.NET MVC 使用 TempData 的会话状态,但我不需要/不想要 TempData - 我只想禁用会话状态。帮助!
您可以创建自己的 ControllerFactory 和 DummyTempDataProvider。像这样的东西:
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 中执行此操作:
ControllerBuilder.Current.SetControllerFactory(new NoSessionControllerFactory());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)