ASP .net MVC中每个数据存储区的生命周期是多少

时间:2011-01-03 21:13:59

标签: asp.net-mvc

我已经看到了对这些的一些解释,但没有真正比较它们开始,结束或重叠的地方,或者它们使用的好例子。

以下每个数据集的生命周期是多少?我错过了吗?

  • 应用
  • 会话
  • 的ViewData
  • TempData的

2 个答案:

答案 0 :(得分:12)

应用程序:只要您的应用程序正在运行。您的应用程序可能会因各种原因自动关闭并重新启动

会话:只要用户正在积极使用您的网站。这通常由ASP.NET发送的cookie确定,以便为每个用户提供一段时间后过期的唯一ID。有很多方法可以定制&调整这个以满足各种需求

viewdata:只要正在处理当前请求。这用于将数据从控制器发送到视图以立即呈现,因此不会持久化

tempdata:直到读回该值或者在会话中处理 next 请求结束或会话结束/到期时为止 - 以较快者为准。这是用于在发出重定向

时将数据从一个控制器移动到另一个控制器

答案 1 :(得分:1)

应用程序:此操作在应用程序启动时开始,在应用程序停止执行时结束。如果用户离开应用程序域或重新启动应用程序,则基于应用程序的数据也会丢失。

会话:这是基于应用程序的存储。当用户离开当前请求或会话过期时,此操作结束。它可以以多种模式存储,例如应用程序cookie或客户端cookie。

ViewBag和ViewData::此存储方法保存当前请求的数据。它在视图和控制器之间传输数据。

TempData::此存储类型的寿命取决于在哪个请求下读取Tempdata。一旦被程序读取,它将被销毁。但是我们可以使用peekkeep方法来延长其寿命。