2012-05-10 9 views
1

グローバルなErrorHandlerフィルタを使用して未処理の例外をログに記録していますが、この同じハンドラを使用してcatchブロック内から処理された例外をログに記録することもできます。内部からのErrorFilterの実行メソッド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このようなグローバルフィルタに追加される:

public class ErrorLogFilter : FilterAttribute, IExceptionFilter 

:(ELMAHと同様Elfarの一部としてではなく、MVCのための)

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

ErrorLogFilterは以下のように定義されますどのようにこれを達成するための任意の提案?

答えて

1

GlobalFilters.Filtersは、IMvcFiltersの周囲のラッパーであるFilterを含むGlobalFilterCollectionです。

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

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

ので整形はGlobalFilters.FiltersにはErrorLogFilterがないことを合図に正しいです。

+0

それはうまくいくように見える、ありがとう。 –

+0

確認済みで、完璧に動作します... –

関連する問題