2013-09-05 79 views
3

給定項目的性質,我需要在TempData中存儲一個簡單的對象(具有3/4屬性)。這是一次只讀一次,所以這很好,但需要在幾個核心方法/操作之間傳遞。asp.net mvc和web farm

問題是:我如何使它與webfarms一起工作?需要配置什麼東西才能讓TempData與webfarm一起使用?

使用MVC 4剃刀。

謝謝

回答

0

默認情況下,TempData的使用會話來實現,所以這將是在一個農場的一個問題。

最簡單的解決辦法是使用CookieTempDataProvider

+0

謝謝。當然,這是一種選擇,但如果訪問該網站的用戶禁用了cookie,該怎麼辦?再加上它會有一點點的打擊,我相信所以想盡量避免這種情況。我的印象是,您可以通過確保webfarm上的機器密鑰完全相同來工作(因爲這是ASP.NET和會話狀態使用的技巧) –

+0

如果您已將會話用於進程外一些位於市中心的Session商店,那麼就沒有問題了。使用cookie的原因是,如果你不想使用會話。 –

+0

OK ......所以沒有不使用cookie來存儲TempData的,並使其跨Web農場工作另一種方式? –

1

的TempData存儲在會話中。這意味着在網絡農場中使用它的唯一可靠方法就是擁有某種狀態服務器。

更改所有服務器上的ApplicationId(MachineKey)以使它們匹配,對會話沒有任何影響。這隻意味着每個服務器都可以解碼其他人留下的Cookie。會話存在於內存中的單個Web服務器上。

如果你沒有對你的負載平衡器粘性會話,用於填充的TempData在服務器1的要求,很可能會重新導向至本身TempData的將不被填充不同的(或不與爲同一數據的服務器只需放在服務器1上)。