asp.net-mvc – 为什么ASP.NET MVC使用会话状态?

推荐由ASP.NET团队使用缓存而不是会话,我们在最近几年停止使用WebForm模型的会话。所以我们通常在web.config中关闭会话
<sessionState mode="Off" />

但是,现在当我使用这个设置测试一个ASP.NET MVC应用程序时,它在类的SessionStateTempDataProvider在mvc框架中引发一个错误,它要求我打开会话状态,我和它的工作。看看它使用会话的源:

// line 20 in SessionStateTempDataProvider.cs
Dictionary<string,object> tempDataDictionary = 
httpContext.Session[TempDataSessionStateKey] as Dictionary<string,object>;

那么,他们为什么要在这里使用会话?我缺少什么?

================================================== ======

编辑对不起,这并不意味着这篇文章讨论会话与缓存,而是在ASP.NET MVC的上下文中,我只是想知道为什么会话在这里使用。在这blog post还斯科特Watermasysk提到,关闭会话是一个很好的做法,所以我只是想知道为什么我必须打开使用MVC从这里。

解决方法

会话用于TempData存储。 TempData是会话状态的高度限制形式,其将仅持续直到来自某个用户的下一个请求。 (Edit在MVC 2中,它持续到下一次读取。)TempData的目的是存储数据,然后执行重定向,并且存储的数据可供您刚刚重定向的操作使用。

对TempData存储使用Session意味着已经处理Session的任何分布式缓存系统将适用于TempData。避免使用Session直接当TempData将做一些几个优点。一个是你不必自己清理会话; TempData将自动“过期”。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....