2008-08-04 72 views
11

我維護的其中一個網站在很大程度上依賴於使用ViewState(這不是我的代碼)。但是,在ViewState過度膨脹的某些頁面上,Safari會拋出"Validation of viewstate MAC failed"錯誤。ViewState僅在Safari中無效

這似乎只發生在Safari中。 Firefox,IE和Opera都在同一場景中成功加載。

回答

1

我一直在做一些研究,雖然我不完全確定它的原因,我相信這是因爲Safari沒有返回完整的結果集(因此裁剪它)。

我一直在與另一位開發人員討論,並在第9頻道上發現了以下帖子,其中建議使用SQL狀態服務來存儲避免回發問題和頁面大小的視圖狀態。

http://channel9.msdn.com/forums/TechOff/250549-ASPNET-ViewState-flawed-architecture/?CommentID=270477#263702

這個問題似乎是最好的解決方案?

3

我的第一個停靠港將要經過的頁面上的元素,看看它控制:

    當我切換ViewState的關閉
  1. 可以移出的頁面,進入
  2. ,這還一個AJAX調用需要時加載

失敗,這是免責聲明 - 我從來沒有在面向web的網站上使用這個解決方案 - 但在過去我想消除大量ViewStates我已將ViewState存儲在受限觀衆應用程序中會議。

它對我來說很有效,因爲對用戶數量的影響並不顯着,但如果您運行的是相當受歡迎的站點,我不會推薦這種方法。但是,如果Session解決方案適用於Safari,則可以始終適當地檢測用戶代理和軟件。

4

雖然我第二次使用Channel 9解決方案,但請注意,在某些託管環境中,Safari不被視爲上級瀏覽器。您可能需要將其添加到應用程序的browscap中,以便使用某些ASP.Net功能。

這是我們對使用ASP菜單控件的客戶端網站的一些頭痛的根本原因。