我已经读过TempData由Asp.Net MVC中的会话支持,但仅在当前请求的持续时间内有效。这使得它适用于Redirect2Action等。 鉴于它仅对当前请求有效,这是否意味着您不会遇到WebFarms上的负载均衡器和会话问题。基本上是因为每个请求只在一个网络服务器上。
是否可以选择通过Request.Items集合来支持它?
答案 0 :(得分:4)
TempData仅对当前和next request有效,这就是它存储在会话状态的原因。将其与请求一起存储将无效。
因此,任何会破坏会话状态中保存项目的限制(例如负载平衡)也会破坏TempData。
的文档您可以使用TempDataDictionary对象以相同的方式传递数据 您使用ViewDataDictionary对象。但是,数据在 TempDataDictionary对象仅保留从一个请求到下一个请求, 除非您使用Keep标记一个或多个要保留的密钥 方法。如果某个键被标记为保留,则会保留该键 下一个请求。
TempDataDictionary对象的典型用法是从中传递数据 重定向到另一个动作方法时的动作方法。例如, 动作方法可能会存储有关错误的信息 controller的TempData属性(返回TempDataDictionary object)在调用RedirectToAction方法之前。下一步行动 然后,方法可以处理错误并呈现显示的视图 错误信息。