3

未処理の例外ログでは、特定のページで1日を通してこのエラーが散発的に発生します。ページ上にプログラムで作成したり、ページにボタンをデータバインドしたりするコントロールはありません。

私のロギングでは、ページとスタックトレースを知っている現在のハンドラーを取得しますが、スタックトレースはPage.ProcessPostDataに要約されるだけなので、意味のあるものは何も提供しません。

より意味のあるデータをログに記録する方法はありますか?おそらくそれが投稿されたものとそれが投稿されると期待されたもののように?

これはどこにも再現できません。

4

2 に答える 2

3

次のようなリクエストのすべてのフォームパラメータを確認できます。

if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Request != null) {
    foreach (string key in System.Web.HttpContext.Current.Request.Form.Keys) {
        if (key.IndexOf("__VIEWSTATE") == -1) {
            //key:   key
            //value: System.Web.HttpContext.Current.Request.Form[key]
        }
    }
}
于 2010-03-09T16:21:25.780 に答える
2

この問題の一般的な原因は、ユーザーがポストバックを引き起こすアクションを実行する前にページ全体がレンダリングされるのを待たない場合です。このページの大きさはどれくらいですか?ユーザーは焦りますか?

私が見るもう1つの場所は、リピーターのアイテムテンプレート内のボタンのように、ポストバックコントロールが内部にあるリピーター/テンプレートコントロールであり、ポストバック後に1回だけではなく誤ってデータバインドされます。ただし、それは一貫して失敗するため、可能性は低いようです。

例外からより多くの情報を取得する方法がわかりません...そもそもそれをどのように捉えていますか?この例外が発生したときにPageオブジェクト自体がインスタンス化されることはまったくないと思うので、おそらくカスタムHttpModuleを使用する必要があります。ProcessRequestの周りにtry/catchを配置できますか?これにより、Requestオブジェクトと投稿されたデータにアクセスできるようになります。

于 2009-11-24T07:20:28.567 に答える