4

例外メッセージを使用してelmaで例外をフィルタリングする方法はありますか?

例:
「System.Web.HttpException: 要求がタイムアウトしました。」すべての HttpException を除外するのではなく、タイムアウトした要求のみを除外します。
「System.Web.HttpException: リクエストの最大長を超えました。」

私がやりたくないのは、そのための独自のコードを書くことです。buildin-web.config構成でこれを行うことは可能ですか?

ありがとうございました!

4

2 に答える 2

11

はい、できます。正規表現を使用してメッセージを問い合わせるだけです。例外メッセージを比較する方法の詳細については、以下の例を参照してください。

<errorFilter>
  <test>
    <!-- http://groups.google.com/group/elmah/t/cbe82cee76cc6321 -->
    <and>
      <is-type binding='Exception'
               type='System.Web.HttpException, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' />
      <regex binding='Exception.Message'
             pattern='invalid\s+viewstate'
             caseSensitive='false' />
      <regex binding='Context.Request.UserAgent'
             pattern='Trident/4(\.[0-9])*'
             caseSensitive='false' />
    </and>
  </test>
</errorFilter>
于 2010-03-30T23:57:15.843 に答える
7

global.asax でイベント ハンドラーをセットアップして、醜い構成の正規表現設定を回避できます。

void ErrorMail_Filtering(object sender, Elmah.ExceptionFilterEventArgs e) 
{     
    if (e.Exception.Message.Contains("Request timed out"))
        e.Dismiss(); 
}

エラーフィルタリングを参照してください。

于 2011-01-12T20:29:00.530 に答える