2

大きな ASP.NET MVC プロジェクト (ASP.NET から変換) をインストールしました。すべてがうまく機能していますが、ELMAH を介して、不正な形式のボット/スパイダー リクエストに起因する膨大な数のエラーが発生しています。それらは悪意のあるものではなく、形式が正しくないだけです。例としては、ProductID のない製品ページのリクエストや、ProductID が整数でない製品ページのリクエストがあります。これらのケースでは、整数の ProductID を期待するアクション メソッドをセットアップしており、ASP.NET MVC がそれ以外のものを検出するとエラーがスローされます。

アクション メソッドをハックして、文字列または null 許容型の int を受け入れ、変換を行い、不足しているパラメーターを処理するコードを記述したくありません。実際のユーザーには表示されないエラーを処理するのは大変な作業のようです。

ELMAH でこれらのエラーを除外できることはわかっていますが、これを処理するためのより適切な方法があるかどうか疑問に思っていました。

4

1 に答える 1

1

ELMAH に記録されたエラーをフィルタリングできます。

エラー フィルタリングに関する一般的な記事 - http://code.google.com/p/elmah/wiki/ErrorFiltering

いくつかのサンプル - http://code.google.com/p/elmah/wiki/ErrorFilterExamples

このようなものをglobal.asax(またはそのあたり)に入れることができます。

    protected void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
    {
        if(e.Exception.GetBaseException() is WebFaultException)
        {
            var exception = ((WebFaultException) e.Exception.GetBaseException());

            if(exception.StatusCode == HttpStatusCode.NotModified)
                e.Dismiss();
        }
    }

既知の正規表現パターンでヒットする URL を明示的にリストする web.config アプローチの方が優れていると思います。そうすれば、フィルタリングが厳しくなり、誤検知につながることはありません。

于 2012-10-25T09:05:00.837 に答える