ローカル環境で正常に動作する ASP.NET 2.0 アプリケーションがあります。テスト サーバーに公開すると、サーバーで断続的なエラーが発生します。
最も一般的なものは次のとおりです。
パディングが無効であり、削除できません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Security.Cryptography.CryptographicException: パディングが無効であり、削除できません。
ソース エラー:
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
スタックトレース:
[CryptographicException: パディングが無効であり、削除できません。]
System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) +1545747
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +257
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +30 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte [] buf、Byte[]修飾子、Int32 start、Int32 length、Boolean useValidationSymAlgo) +164
System.Web.UI.Page.DecryptString(String s) +83
System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext コンテキスト) +148
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +358 System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ) , Boolean& completedSynchronously) +64
これは、特定の WebResource.axd リクエストへのリクエストで発生します。
表示されている他のエラーは次のとおりです。
ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Web.HttpException: ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。
このエラーは、フォームの投稿中に時々発生します。
飛び込んで、このエラーに対する明白な (通常の) 答えを教えてくれる前に、次のことを考慮してください。
- アプリケーションは、IIS6 上の Windows Server 2003 に展開されます。
- Web ファームではありません。ここでは 1 つの Web サーバーのみが使用されています。
- アプリケーション プール ID はカスタム サービス アカウントであり
aspnet_regiss -ga <username>
、サーバー上で実行しました。無効。