2013-01-17 11 views
6

私たちのWebサーバの1つに.net 4.5 Frameworkがインストールされています。当社のアプリケーションは、.net 4.0を対象としており、ロードバランサの背後にある複数のサーバから実行されます。我々はいくつかのPOSTのために、次のエラーメッセージが表示されますインストールした後.NET 4.5 Frameworkがロードバランサの背後にある1台のサーバにインストールされていると、ASP.NET EventValidationが失敗する

ERROR_NAME = System.ArgumentExceptionの error_messageは=無効なポストバックまたはコールバック引数を要求します。イベントの検証は、in構成または<%@ Page EnableEventValidation = "true"%>を使用して有効になっています。セキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生することを確認します。データが有効で予期されている場合は、検証のためにポストバックまたはコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用します。 error_details =ソース:System.Web

要求の本文の__EVENTVALIDATION値は、.net 4.5のインストールでサーバーから要求されたときとは異なります。 MSDNによると、.net 4.5の暗号化の変更には構成のオプトインが使用されているため、デフォルトでは下位互換性があるはずです。

イベントの有効性を無効にしないで設定を変更しても、.net 4.0だけが動作するように_netがインストールされているマシンで_EVENTVALIDATIONが同じ動作をする必要がありますか?

+1

このサーバーだけで単独で実行している場合はこれですか?ロードバランサに永続性が有効になっていますか?このサーバが、4.5を持たない別のWebサーバからのポストバックを取得している可能性はありますか? –

+0

これは独立した方法で正常に動作します。私は、最初のリクエストが.net 4.5なしのサーバからのもので、投稿が.net 4.5がインストールされたサーバに転送するときに問題が発生すると思います。 – chrisk

+0

マシンのキーなどを変更しなかったかどうかを確認してください。その他の問題はなく、残りのサーバーにロールアウトします。その間、ロードバランサに永続性を実装し、すべてのパッチを適用できるようになるまでサーバー間の呼び出しを排除します。ハイブリッドモードはうまく動作しないようです。 –

答えて

0

私は、マシンキーの設定をチェックし、すべてのサーバー上の同じことを確認してくださいと思います。あなたが任意のクライアント側のスクリプト

を持っている場合Uses for MachineKey in ASP.NEThttp://aspnetresources.com/tools/machineKey

また、あなたは、実行時にクライアントに制御を変更するクライアントスクリプトを記述する場合、あなたはRegisterForEventValidationメソッドを使用する必要があります」をチェックすることができます偽のイベント検証エラーを避けるために。 "

http://msdn.microsoft.com/en-us/library/system.web.ui.page.enableeventvalidation.aspx

6

我々は現在、2003(.NET 4.0)からのWindows 2012(.NET 4.5)を、当社のサーバーファームを移行すると私は同じ問題がありました。 ClientScriptManagerを見ると、イベント検証コードがかなり変更されています。

このため修正がhere

<appSettings> 
    <add key="aspnet:UseLegacyEventValidationCompatibility" value="true" /> 
</appSettings> 

説明するようにレガシーイベント検証の互換性を使用するのAppSettingを追加しました今私のページでイベントの検証のために生成された値は、.NET 4.0または4によって生成されたかどうかと同じです。5

+0

これをテストするサーバーファームはありませんが、これは間違いなく良い解決策のように思えます。 googleとmsdnで広範な検索を行った後、私はこの解決策を見つけられませんでした。 – chrisk

+1

移行が完了したら、このの値を削除してください。これらのスイッチは移行シナリオにのみ含まれており、今後の更新でこれらのスイッチを削除するつもりです。このスイッチを依然として使用していて、アプリケーションを削除すると、アプリケーションが壊れる可能性があります。 – Levi

+0

@Leviこれは[Application Compatibility in the .NET Framework 4.5](http://msdn.microsoft.com/en-us/library/hh367887%28v=vs.110%29.aspx#asp)には記載されていません。それは[http://msdn.microsoft.com/en-us/library/hh975440.aspx](http://msdn.microsoft.com/en-us/library/hh975440.aspx)にのみ記載されていました。見つけにくいです(探していることが分かっていない限り)。 –

関連する問題