鉴于项目的性质,我需要在 TempData 中存储一个简单的对象(具有 3/4 属性)。这是一次读取一次写入一次,这很好,但确实需要在几个核心方法/操作之间传递。
问题是:我怎样才能使它与网络农场一起工作?需要配置哪些东西以允许 TempData 与 webfarm 一起工作?
使用 MVC 4 剃刀。
谢谢你
鉴于项目的性质,我需要在 TempData 中存储一个简单的对象(具有 3/4 属性)。这是一次读取一次写入一次,这很好,但确实需要在几个核心方法/操作之间传递。
问题是:我怎样才能使它与网络农场一起工作?需要配置哪些东西以允许 TempData 与 webfarm 一起工作?
使用 MVC 4 剃刀。
谢谢你
默认情况下,TempData 是使用 Sessions 实现的,因此这在场上会是个问题。
最简单的解决方案是使用CookieTempDataProvider
TempData 存储在会话中。这意味着在网络场中使用它的唯一可靠方法是拥有某种状态服务器。
更改所有服务器上的 ApplicationId (MachineKey) 以使它们匹配对会话没有任何作用。这仅意味着每个服务器都可以解码其他服务器留下的 cookie。会话存在于内存中的单个 Web 服务器上。
如果您的负载均衡器上没有粘性会话,则在服务器 1 上填充 TempData 的请求可能会重定向到与其自身不同的服务器,并且不会填充 TempData(或者不会填充刚刚放入的相同数据)服务器 1)。