asp.net mvc和web farm

时间:2013-09-05 16:45:07

标签: asp.net-mvc session web-farm tempdata

鉴于项目的性质,我需要在TempData中存储一个简单的对象(具有3/4属性)。这是一次只读一次,所以很好,但确实需要在几个核心方法/动作之间传递。

问题是:如何使其与webfarms一起使用?需要配置哪些内容才能使TempData与webfarm一起使用?

使用MVC 4 Razor。

谢谢

2 个答案:

答案 0 :(得分:1)

默认情况下,TempData是使用Sessions实现的,因此这将是服务器场上的问题。

最简单的解决方案是使用CookieTempDataProvider

答案 1 :(得分:1)

TempData存储在会话中。这意味着在Web场中使用它的唯一可靠方法是拥有某种状态服务器。

更改所有服务器上的ApplicationId(MachineKey)以使它们匹配对会话没有任何作用。这只意味着每个服务器都可以解码其他服务器留下的cookie。会话存在于内存中的各个Web服务器上。

如果您的负载均衡器上没有粘性会话,则在服务器1上填充TempData的请求可能会重定向到与自身不同的服务器,并且不会填充TempData(或者不会使用相同的数据进行填充)放入服务器1)。