1

グローバルErrorHandlerフィルターを使用して未処理の例外をログに記録していますが、これと同じハンドラーを使用して、catchブロック内から処理済みの例外をログに記録できるようにしたいと思います。

グローバルフィルターにアクセスし、構成されたとおりにErrorHandlerを実行したいのですが、これを行うのに問題があります。次のことを試しましたが、Resharperから、フィルターをErrorLogFilterにすることはできないと言われました。

foreach (var filter in GlobalFilters.Filters)
{
    if (filter is ErrorLogFilter) // Static analysis tells me this can never be an ErrorLogFilter
    {
        // want to execute the filter
    }
}

ErrorLogFilterは、次のようにグローバルフィルターに追加されます。

GlobalFilters.Filters.Add(new ErrorLogFilter(provider));

ErrorLogFilter(Elfarの一部として、Elmahと同様ですが、MVC用)は次のように定義されます。

public class ErrorLogFilter : FilterAttribute, IExceptionFilter

これを達成する方法について何か提案はありますか?

4

1 に答える 1

1

GlobalFilters.Filters追加されたのラッパーであるフィルターを含むGlobalFilterCollectionですIMvcFilter

代わりにこれを試してください:

foreach (var filter in GlobalFilters.Filters)
{
    if (filter.Instance is ErrorLogFilter)
    {
        // want to execute the filter
    }
}

したがって、Reshaperは、にがないことを正しく通知ErrorLogFilterされGlobalFilters.Filtersます。

于 2012-05-10T20:35:27.547 に答える