为什么TempData由Session支持

时间:2012-04-03 04:57:09

标签: c# asp.net asp.net-mvc

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

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

1 个答案:

答案 0 :(得分:4)

TempData仅对当前和next request有效,这就是它存储在会话状态的原因。将其与请求一起存储将无效。

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

请参阅TempDataDictionary

的文档
  

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

     

TempDataDictionary对象的典型用法是从中传递数据   重定向到另一个动作方法时的动作方法。例如,   动作方法可能会存储有关错误的信息   controller的TempData属性(返回TempDataDictionary   object)在调用RedirectToAction方法之前。下一步行动   然后,方法可以处理错误并呈现显示的视图   错误信息。