gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:37:59 25 4
gpt4 key购买 nike

ASP.NET团队建议使用缓存而不是 session ,最近几年,我们不再使用 session 来处理WebForm模型。所以我们通常在web.config中关闭 session

<sessionState mode="Off" />

但是,现在,当我使用此设置测试ASP.NET MVC应用程序时,它在mvc框架内的 SessionStateTempDataProvider类中引发了错误,它要求我打开 session 状态,我做到了并且可以工作。查看它使用 session 的源:
// line 20 in SessionStateTempDataProvider.cs
Dictionary<string, object> tempDataDictionary =
httpContext.Session[TempDataSessionStateKey] as Dictionary<string, object>;

那么,为什么他们要在这里使用 session ?我想念什么?

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

编辑抱歉,本帖子的意思并不是要就 session 与缓存进行辩论,而是在ASP.NET MVC的背景下,我只是想知道为什么在这里使用 session 。 Scott Watermasysk在此 blog post中也提到关闭 session 是一个好习惯,因此我只是想知道为什么必须从现在开始使用MVC将其打开。

最佳答案

session 用于TempData存储。 TempData是 session 状态的一种非常有限的形式,它将仅持续到特定用户的下一个请求为止。 (编辑在MVC 2+中将持续到下一次读取。)TempData的目的是存储数据,然后进行重定向,并使所存储的数据可用于刚刚重定向到的操作。

将Session用于TempData存储意味着已处理Session的任何分布式缓存系统都将适用于TempData。 TempData可以避免直接使用Session有很多好处。一种是您不必自己清理 session ;另一种是无需清理 session 。 TempData将自行“过期”。

关于asp.net-mvc - 为什么ASP.NET MVC使用 session 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/387124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com