为什么TempData有Session支持

本文关键字:支持 Session TempData 为什么 | 更新日期: 2023-09-27 18:30:00

我读到TempData由Asp.Net MVC中的会话支持,但仅在当前请求的持续时间内有效。这使其适用于Redirect2Action等。考虑到它只对当前请求有效,这是否意味着你不会在WebFarms上遇到负载均衡器和会话的问题。基本上是因为每个请求只在一个Web服务器上。

是否可以选择由Request.Items集合来支持它?

为什么TempData有Session支持

TempData仅对当前和下一个请求有效,这就是它存储在会话状态的原因。将其与请求一起存储将不起作用。

因此,任何会破坏会话状态下保存项目的限制(例如负载平衡)也会破坏TempData。

请参阅TempDataDictionary 的文档

您可以使用TempDataDictionary对象以相同的方式传递数据使用ViewDataDictionary对象。但是TempDataDictionary对象仅从一个请求持续到下一个请求,除非使用"保留"将一个或多个密钥标记为保留方法如果某个密钥标记为保留,则该密钥将保留下一个请求。

TempDataDictionary对象的典型用途是从当重定向到另一个操作方法时,操作方法。例如操作方法可能会将有关错误的信息存储在控制器的TempData属性(返回TempDataDictionary对象),然后再调用RedirectToAction方法。下一步行动方法可以处理错误,并呈现一个显示错误消息。