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