我使用全局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
有关如何完成此任务的任何建议?
答案 0 :(得分:1)
GlobalFilters.Filters
是GlobalFilterCollection,其中包含Filter个,它们是添加的IMvcFilter
周围的包装。
请改为尝试:
foreach (var filter in GlobalFilters.Filters)
{
if (filter.Instance is ErrorLogFilter)
{
// want to execute the filter
}
}
所以Resrper是正确的,表示ErrorLogFilter
中没有GlobalFilters.Filters
。