如何在 ASP.NET MVC 中禁用会话状态?
我想要一个非常轻量级的 ASP.NET MVC 站点,其中包括删除尽可能多的常用 HttpModule 并禁用会话状态。 但是,当我尝试执行此操作时,出现以下错误:
SessionStateTempDataProvider 需要启用 SessionState。
我已在 web.config 中禁用会话状态:
<sessionState mode="Off" />
我了解 ASP.NET MVC 使用会话状态对于 TempData,但我不需要/想要 TempData - 我只想禁用会话状态。 帮助!
I would like to have a very lightweight ASP.NET MVC site which includes removing as many of the usual HttpModules as possible and disabling session state. However when I try to do this, I get the following error:
The SessionStateTempDataProvider requires SessionState to be enabled.
I've disabled session state in web.config:
<sessionState mode="Off" />
I understand that ASP.NET MVC uses session state for TempData, but I don't need/want TempData - I just want to disable session state. Help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以创建自己的 ControllerFactory 和 DummyTempDataProvider。 像这样的事情:
然后你只需要在应用程序启动时注册控制器工厂 - 例如你可以在 global.asax 中执行此操作:
You could make your own ControllerFactory and DummyTempDataProvider. Something like this:
And then you would just need to register the controller factory on app startup - e.g. you could do this in global.asax:
我找到了一种方法,但我并不特别关心:
创建 NoTempDataProvider
手动覆盖控制器中的提供程序
我非常希望有一种方法可以完全通过配置,但这目前有效。
I've found one way, which I don't particularly care for:
Create NoTempDataProvider
Manually Overwrite the Provider in the Controller
I would greatly prefer a way to do this completely via the configuration, but this works for now.
如果需要对简单字符串使用 TempData,可以使用 MvcFutures 中的 CookieTempDataProvider http: //aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471。
If you need to use TempData for simple strings, you can use the CookieTempDataProvider in MvcFutures http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471.
根据 Brad Wilson 的说法,这个问题已在 MVC 2 Preview 1 中得到修复。请参阅此处 和此处。
According to Brad Wilson, this has been fixed in MVC 2 Preview 1. See here and here.
现代解决方案:
因此,不使用 Session(或 TempData),会禁用会话状态。
来源< /a>
Modern solution:
So not using Session (or TempData), disables Session State.
Source