0

最近の負荷テスト中に、奇妙な「Index Out of Range Exception」が発生しました

スタックトレース:

 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 クラスで発生しているようです。

これはビューステートと関係があると思いますが、なぜこれがスローされているのかわかりません。

何か案は?

4

2 に答える 2

1

誰かが投稿を開始すると、アプリケーションは500KBのビューステートすべてを含む投稿の送信を開始します。ポストバックの途中で、ユーザーは退屈して他の何かをクリックします。ブラウザは、ビューステートの一部だけでポストバックを遮断します。サーバーは、ビューステートが中断されたことを示すエラーをスローします。これは、ビューステート暗号化機能がオンになっている2.0アプリケーションだと思います。解決策は、ビューステートサイズをより積極的に管理することです。

イベント検証の例外は、悪意のあるユーザーがカスタムのポストバック応答を作成しているときに発生する可能性が高いため、ここではイベント検証が関与していないと思います。

于 2008-12-04T02:32:59.853 に答える
0

推測ですが、サイトで EventValidation を無効にしましたか? 何かが手動のポストバックを作成しようとしているか、そうでなければ http リクエストの投稿データにデータを直接挿入しようとしているように聞こえますが、viewstate フィールドの正しい値が計算されていません。これにより、復号化が見事に失敗します。

EventValidation をオンにすると、すべてが正しく計算されたとしても例外が発生しますが、少なくとも意味のある例外です。

于 2008-11-25T17:14:25.410 に答える