private bool ProcessFilter(ExecuteEnum when, FilterDescriptor desc)
{
if (desc.FilterInstance == null)
{
desc.FilterInstance = filterFactory.Create(desc.FilterType);
IFilterAttributeAware filterAttAware = desc.FilterInstance as IFilterAttributeAware;
if (filterAttAware != null)
{
filterAttAware.Filter = desc.Attribute;
}
}
try
{
if (logger.IsDebugEnabled)
{
logger.DebugFormat("Running filter {0}/{1}", when, desc.FilterType.FullName);
}
return desc.FilterInstance.Perform(when, context, controller);
}
catch(Exception ex)
{
if (logger.IsErrorEnabled)
{
logger.ErrorFormat("Error processing filter " + desc.FilterType.FullName, ex);
}
throw;
}
}