Я использую Elmah для регистрации исключений в моем приложении MVC с использованием Alex Beletsky's elmah-mvc пакета NuGet.Предотвращение применения глобального фильтра ASP.NET MVC для действия Elmah
Приложение регистрирует некоторые глобальные фильтры, применяемые к каждому вызванному действию.
Есть ли способ предотвратить использование некоторых из этих фильтров при вызове страницы журнала ошибок (foo.com/elmah
)?
Тест, как показано ниже, работает, конечно, но я ищу более элегантный способ, который не включал бы изменение фильтра (и исходного кода от Elmah/Elmah MVC). Возможно ли это?
public class FooAttribute : FilterAttribute, IActionFilter
{
// ...
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.Controller is ElmahController)
{
return;
}
// do stuff
}
}
Я знаю, что атрибуты can't be added or removed at runtime.
Я думал обертывание
ElmahController
в новой, где я мог бы добавить исключение фильтр, но я не уверен, как (если это возможно), чтобы изменитьweb.config
ссылаться на эту обертку вместо оригинального контроллера.
Проверьте это - http: // s tackoverflow.com/questions/9953760/how-to-disable-a-global-filter-in-asp-net-mvc-selectively – malkam
@malkam Я знаю этот. Проблема состоит в том, что он включает в себя украшение действия атрибутом, то есть изменение исходного кода Elmah, который я не хочу делать по очевидным причинам. –
Это решение для меня не кажется таким страшным. Я бы, вероятно, сделал это в позитиве, хотя: 'if (controller is ElmahController) {// возвращать без специальных действий' – DLeh