2009-04-29 4 views
7

を示し、何次のエラーが表示されます。System.Web.Configuration.MachineKeySection.GetDecodedDataで「データを検証できません」例外は、私がローカルホストカッシーニのWebサイトのテストを開発してきたと私は断続的に私のウェブサーバIに展開するとき、それは常に今、正常に動作している

Global.Application_Error Error: Exception occurred during request: http://....blah.aspx Unable to validate data. at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) HttpApplication.RaiseOnError => EventHandler.Invoke => Global.Application_Error

これは私のglobal.asaxで捕捉されています。私は周りを検索したが、原因を見つけることができません。この例外は、非常に単純で小さなWebフォームでスローされています。このサイトはWebファーム内でホストされていません。

2ページが断続的にこのエラーが発生するように見えるし、そのうちの一つは、ViewStateにブール値を格納しますが、それはそれとは別に変更されません。

は、誰もがこの前に遭遇していますか?

答えて

11

http://dotnetcoderoom.wordpress.com/2008/11/07/unable-to-validate-data-aspnet-error/

原因: ビューステートデータを暗号化および復号化しながら、本の基本的な理由は、キーの違いです。 asp.netがkey1でページをレンダリングし、ビューステートにページステートを保存したとします。asp.netのキーがkey2に変更されました。これで、サーバー側のイベントがページ上で発生するとviewstateが復号化され、別の暗号化キーのために古いビューの状態が無効になりました。

あなたが時間に沿って、それはそれにいくつかのイベントを行った後のページを開いたときにそれが発生する可能性があります。

ソリューション viewstateデータの暗号化と復号化に使用するキーが1つだけになるように、web.configファイルでキーを修正します。より多くの情報をご覧ください

http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/ASP_DOT_NET/Q_21321364.html

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312906

+0

+1良い答え - テクニカルページのコードの公開実装です:http://www.developmentnow.com/articles/machinekey_generator.aspx –

+0

自分のウェブにmachineKeyを追加しました。設定してください。エラーはまだありませんので、これが解決策です。 –

+0

正しい解決策としてマークしてください;) – StevenMcD

8

を見るためにあなたのweb.configファイルへのマシンのキーを追加してみてください私は、 「データを検証できませんでした」System.Web.Configuration.MachineKeySection.Enc ryptOrDecryptData "私のasp.net Webアプリケーションで。私はクッキーをクリアし、例外は停止しました。

+0

あなたは間違いなく何かをしています。私にとっては、IISのWebサイトパスを、同じASP.NETフォームソリューションと同じドメインベースのCookieを使用する異なるサイトに変更しましたが、web.configでは異なるマシンキーの組み合わせを変更しました。だから、クッキーは新しいサイト用だと思っていましたが、そうではありませんでした。前のサイトで暗号化されたデータを復号化するときに突然停止する。ブーヤ!先端に感謝します。 –

0

は、同じエラーが発生しました。 machineKeyとdecryptionKeyは、すべてのweb.configファイルで同じであったが、いくつかのweb.configファイルは

<add key="aspnet:UseLegacyEncryption" value="true" /> 
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" /> 

を持っていたし、他はしませんでした。すべてのweb.configからこのキーを削除しました。私は解決策は、キーを削除しているとは思わないが、すべてのweb.configファイルで同じであることが

0

に私の場合は、(1は非常に古いと私はちょうど作成した別のものだった)2つのWebアプリケーションを持っていたと持つにもかかわらず、 1つのアプリケーションで生成された同じマシン鍵設定チケットは、別のアプリケーションでは使用できませんでした。これは、より新しいアプリケーションでは、をmachineKeyノードの引数としてweb.configに追加することで修正されました。

関連する問題