2008-11-25 74 views
0

在最近的負載測試,我已經得到了一些奇怪的「索引超出範圍異常的」.net應用程序中的奇怪錯誤。 - RijndaelManaged的

堆棧跟蹤:

at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) 
    at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) 
    at System.Security.Cryptography.CryptoStream.FlushFinalBlock() 
    at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo) 
    at System.Web.UI.Page.DecryptString(String s) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

我們沒有使用一個農場或羣集,然後我不在應用中使用任何加密技術。

看來,這是發生在幕後的.Net類。

我認爲這與viewstate有關,但我無法找出爲什麼會被拋出。

任何想法?

回答

1

如果有人發起帖子,應用程序將開始發送包含所有500KB視圖狀態的帖子。通過回發的一半,用戶感到無聊,然後點擊其他東西。瀏覽器僅在部分視圖狀態下切斷回發。服務器拋出一個錯誤,表示視圖狀態爲borked。我猜想這是一個啓用了視圖狀態加密功能的2.0應用程序。解決方案是更積極地管理視圖狀態的大小。

當惡意用戶正在製作自定義回發響應時,事件驗證異常更有可能發生,所以我不認爲此處涉及事件驗證。

0

只是猜測:你有沒有在網站上禁用EventValidation?聽起來有點像試圖創建手動回發或以其他方式將數據直接插入到http請求的發佈數據中,並且沒有爲viewstate字段計算正確的值。這反過來導致解密失敗壯觀。

在打開EventValidation的情況下,即使他們正確計算了所有內容,也會得到一個異常,但至少這是一個有意義的異常。

+0

爲避免此錯誤,已關閉事件驗證功能。它沒有效果。 – 2008-11-25 18:39:30

+0

所以之前呢?這是好事。 – 2008-11-25 19:38:25