2010-01-26 50 views
2

昨天在我們的某個網站上發現了此問題。首先,該網站託管在Web場環境中,暫時我在兩個節點(2節點環境)上爲web.config添加了一個靜態machineKey。這已經解決了這個問題,現在一切運行良好。視圖狀態MAC驗證失敗

這引發了以下問題: 爲什麼我們在此環境中運行的所有其他網站都不需要此(web.config中的machineKey)。

我檢查了事件日誌以確保我們在其他網站上沒有相同的問題,一切都很正常。我還確認應用程序池不會經常回收,關於應用程序池設置,一切都是正常的。

我能想出的唯一解釋是,該網站是由一個節點渲染的,後續的後臺轉到另一個節點 - 這會讓我相信問題在於負載平衡器。我們的基礎架構人員告訴我,關於負載平衡器和我提議的場景不會發生的情況,應該是這樣。

我是否錯過了這裏的顯而易見的東西,或者有什麼我可以考慮的嗎?

在此先感謝

回答

1

基本上,是的,你是對的 - 當「粘滯會話」在負載平衡器中沒有正確配置並且用戶回發被髮送到不同服務器時,您通常會在Web場環境中看到此情況。

爲了公平對待您的網絡人員,可能大部分請求都被髮送到一臺服務器,但是這個應用程序正在降低使用率,因此請求通常會發送到另一臺服務器 - 但您應該會看到網站,除非交通模式完全不同。

另一個可能的原因是您的頁面加載時間過長,並且用戶在頁面完全加載完成之前回復 - 我設法讓我的一個網站用幾個在頁面加載過程中隱藏遠程廣告調用,或者用戶在頁面呈現和回發之間等待時間過長,並且負載平衡器上的會話超時,因此它認爲這是一個新請求。

+1

+1對於粘滯會話的想法 - 我有網絡人員檢查如何配置這個特定的網站會話持久性。我非常懷疑,頁面加載速度太慢或沒有完全加載之前回發生 - 它是一個頁面「感興趣的註冊」類型的網站與幾個文本框字段和沒有沉重的圖形(使用CSS精靈來減少HTTP請求和總圖像大小) – 2010-01-27 00:10:13

+0

負載平衡器上的會話持久性或「粘滯會話」設置爲0秒,因此請求會根據流量負載在服務器之間彈出。解釋爲什麼我們的其他網站沒有在web.config中定義的靜態machineKey運行良好,因爲它們堅持單個節點 - 感謝您的建議。 – 2010-01-27 00:33:26

+0

沒問題,我自己也犯過類似的錯誤;) – 2010-01-27 00:57:08

0

如果你是一個網絡農場的環境中工作,機器鍵值,如果在web.config中指定需要同步。另外,您還需要確保machine.config文件中的機器鍵值在兩者之間同步。

+0

@Mitchel我理解背後的邏輯,但我沒有得到的是爲什麼其他網站似乎沒有在web.config中指定的機器密鑰值,並且如果machine.config在節點之間同步,是其他網站工作的原因,爲什麼我們的網站需要在web.config中指定它。 – 2010-01-26 22:42:10