2011-06-14 62 views
8

我有點困惑。我沒有明確地設置Web.config <pages ViewStateEncryptionMode="Always" />,所以this MSDN page說它應該默認爲AutoThis MSDN page表示如果控件通過調用RegisterRequiresViewStateEncryption方法請求加密,則Auto應導致視圖狀態信息被加密。但是,我的控件都沒有調用該方法。所以看起來我的視圖狀態實際上不應該被加密。我的VIEWSTATE是否已加密?

但是,當我將視圖狀態複製/粘貼到各種onlineviewstatedecoders之一時,我被告知視圖狀態序列化數據無效。那麼,我的viewstate是否被加密?有沒有一些明顯的方法可以告訴?除非您禁用它,否則默認的ASP.net行爲會更改爲通過默認方式對視圖狀態進行編碼?

+2

只需注意一下,如果視圖狀態包含用戶控件,無論是否正在使用加密,只需說明聯機視圖狀態解碼器有時會顯示「序列化數據無效」。 – James 2011-06-25 10:54:09

回答

3

如果其設置爲始終或自動,所有的控制狀態將是主叫RegisterRequiresViewStateEncryption視圖狀態encrypted.All控制將被加密IR-各自自動的/始終。如果你的'自定義控件'需要加密,請調用它。

見到這對MSDN

如果您正在開發與潛在的敏感信息涉及一個自定義的控制,調用RegisterRequiresViewStateEncryption方法註冊與網頁進行控制,保證了控制的加密視圖狀態。

如果將 ViewStateEncryptionMode設置爲自動 或Always,則整個頁面狀態將爲 加密。

+0

啊。 「如果ViewStateEncryptionMode設置爲自動或始終,整個頁面狀態將被加密。」我沒有注意到,謝謝。無論如何,我認爲我會將其設置爲「始終」,但在設置爲默認值(自動)時應將其加密。 – Jez 2011-06-14 13:07:45

0

的默認設置可以在你的machine.config中,這是所有的web應用程序的通用超級配置中找到。用你的web.config你可以覆蓋它。你可以打開你的網站,看看裏面。

在這裏你可以找到在machine.config:

%WinDir%\Microsoft.NET\Framework\<FrameworkVersion>\CONFIG 
2

強制它,看看你是否從解碼器得到同樣的錯誤。

強制關閉它,看它現在是否解碼。

我認爲這會給你你正在尋找的答案。