2

IIS 7.5で実行されているasp.net(v3.5)Webサイトがあり、アプリケーションプールは2.0です。このサイトは、スティッキー セッションを使用するロード バランス サーバー ファームにもあります。平均して、1 日あたり約 200 ~ 300 件のビューステート エラーが発生し、ポストバック エラーは 1 日あたり 1,000 ~ 2,000 件です。

ポストバック エラーが最も多いページには、多くのアイテムがバインドされている asp データリストが含まれています。フィルタリングとページングのドロップダウン、およびポストバックするいくつかの asp ハイパーリンクとともに。

ビューステートの場合、これらのページは ajax タブ、asp ハイパーリンク、モーダル ポップアップ エクステンダ、および asp ドロップダウンを使用します。

このサイトにはかなりの量のトラフィックがあり、Google や MSN などの多くのボットがアクセスしています。

次のことを試しました。

  • ビューステートのサイズを最小化するために、特定のコントロールでビューステートを無効にする
  • ビューステートをデータベースに移動する
  • ビューステートの圧縮
  • ビューステートをページの下部に移動する

上記のいずれも、問題の解決に役立っていません。

この問題のトラブルシューティングの助けをいただければ幸いです。

エラー情報で更新:

  • ビューステート

エラー ソース: System.Web

エラー Try/Catch: System.Web.UI.ViewStateException: 無効なビューステートです。クライアント IP: . . ポート: *** ユーザーエージェント: Mozilla/4.0 (互換性あり; Synapse) ViewState:00ytitesern5vnudvqgz rneo/nncjwe2gqvm9hwsejfneaemuijx m43rkjqdgmurhezuvzjtw fcu/cbzrx0xfscog4bv07c1fi7ali/883amvbby5owiliaihufk4fvbn1wgarkbwxmmionsf0jcgw6wlnppj3ww8nmd3 423pu91yexxuyuygxpnu9osgzvxre5wfjlhlhg4ngo1bxdgekgfilzqbxjq58w2aqc7gvdj1ytz4xshkzvjdldiecewgfokt/ot2cpecb bavgiy2f/lvfjg4h9kmuvumsgrbkc6enfnfa0eqce2fi2hj3jo1qqchwsvty8l9uaq6k8oq6ctsggrtyr3xnd 654w6nmldj w8 u vvbaez6hm5zofqxnfrzobik6qbqq5dd7qrozuiu abdvgg xaa5jjm9o5/rroxkrx2fzzhkzjij0xc9p6jenvht 0mplciq4xnewyotosx86axuioyb0yww2phkothy2zok7j2q/ xz4j29zz2drnmqj1km 3j mofii0kk0qe0/s8mkotmhtk4k rfyfja/h7wtebpualg3hg9ydru3yn6pfimay2aasoloydvmj/xfffd tknfqeg7da7/n2flq6hczcolanyjsxf9ofstomby4flhcyuuq/hqg7pc8qvrqy0s/seqyqkr 1ne7bktrazjwlgygpprawneml8f1kbujtbjtz7feieyzu76j1mntagwlrhgchwjmux58cjlu2bbh7ayitfevapzt21pn92du5zcnmiajfxfou1motqkl8hqmlbjj0hxhpi5j5gg5xdxpz5xkqfdflw2wgqvfjxilhqm6mwyjsmif6r8wtdjkrsxxmapyeq61lfa8 7zntc2v3v8b...

エラー情報: ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、|machineKey| を確認してください。configuration は、同じ validationKey と検証アルゴリズムを指定します。AutoGenerate はクラスタでは使用できません。

HttpErrorCode: 500

スタック トレース: System.Web.UI.ViewStateException.ThrowError(Exception inner、String persistedState、String errorPageMes​​sage、Boolean macValidationError) で System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) で System.Web.UI.Util.DeserializeWithAssert で(IStateFormatter フォーマッタ、String serializedState) System.Web.UI.HiddenFieldPageStatePersister.Load() で System.Web.UI.Page.LoadPageStateFromPersistenceMedium() で System.Web.UI.Page.LoadAllState() で System.Web.UI. System.Web.UI.Page.ProcessRequest() で System.Web.UI.Page.ProcessRequest() で System.Web.UI.Page.ProcessRequest(ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) で Page.ProcessRequestMain (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) ASP.content_aspx の HttpContext コンテキスト)。System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() での ProcessRequest(HttpContext コンテキスト) System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値および completedSynchronously)

ブラウザ: Mozilla/4.0 (互換; Synapse)

  • ポストバック エラー ソース: System.Web

エラー Try/Catch: System.ArgumentException: ポストバックまたはコールバック引数が無効です。|pages enableEventValidation=|true|/| を使用して、イベントの検証を有効にします。構成または |%@ Page EnableEventValidation=|true| で %| ページで。セキュリティ上の理由から、この機能は、ポストバック イベントまたはコールバック イベントへの引数が、それらを最初にレンダリングしたサーバー コントロールから発信されていることを確認します。データが有効で期待される場合は、ClientScriptManager.RegisterForEventValidation メソッドを使用して、検証のためにポストバックまたはコールバック データを登録します。System.Web.UI.ClientScriptManager.ValidateEvent (String uniqueId, String argument) で System.Web.UI.WebControls.TextBox.LoadPostData (String postDataKey, NameValueCollection postCollection) で System.Web.UI.Page.ProcessPostData (NameValueCollection postData,

エラー情報: 型の例外 |System.Web.HttpUnhandledException| 投げられました。

HttpErrorCode: 500

スタック トレース: System.Web.UI.Page.HandleError(Exception e) で System.Web.UI.Page.ProcessRequestMain(ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) で System.Web.UI.Page.ProcessRequest(ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) ) System.Web.UI.Page.ProcessRequest() で System.Web.UI.Page.ProcessRequest(HttpContext コンテキスト) で ASP.category_aspx.ProcessRequest(HttpContext コンテキスト) で System.Web.HttpApplication.CallHandlerExecutionStep.System.Web. System.Web.HttpApplication.ExecuteStep での HttpApplication.IExecutionStep.Execute() (IExecutionStep ステップ、ブール値および completedSynchronously)

ブラウザ: Mozilla/5.0 (iPhone; Mac OS X のような CPU iPhone OS 6_0_1) AppleWebKit/536.26 (Gecko のような KHTML) バージョン/6.0 Mobile/10A523 Safari/8536.25

4

2 に答える 2

1

ファーム内のすべてのサーバーのマシン キー ( http://msdn.microsoft.com/en-us/library/w8h3skw9%28v=vs.71%29.aspx ) の値は同じですか?

于 2013-03-13T15:28:02.933 に答える
0

私は同様の問題を見てきました.調査の結果、これはスパムボットがサイトにアクセスしたことが原因であると結論付けることができました.つまり、最初に正しいビューステートを取得せずに値を送信しようとしており、ビューステートは設計どおりに動作しています. (ポストバックを無効なデータから保護します-悪意のあるものまたはその他)。

これはおそらくあなたも見ているものだと思います。Google や MSN などの多くのボットに攻撃されている場合は、悪質なボットも攻撃していることはほぼ確実です。

これらの SO 検索結果を参照してください: https://stackoverflow.com/search?q=asp.net+spambot

また、このような記事は、エラーに関する懸念を軽減するのに役立つ場合があります。

エラーメッセージが、「このシナリオの最も単純で最も可能性の高い原因である」という行に沿って何かを明示的に述べるのではなく、複雑な内部問題を検出しようとするワイルドグースチェイスに送信されるのは奇妙に思えますこれを確認する方法をアドバイスするための推奨事項または記事を参照してください。

于 2013-03-13T14:05:43.287 に答える