Używam Elmah do rejestrowania wyjątków w mojej aplikacji MVC przy użyciu pakietu NuGet Alex Beletsky's elmah-mvc.Zapobieganie zastosowaniu filtru globalnego ASP.NET MVC w działaniu Elmah
Aplikacja rejestruje niektóre filtry globalne, stosowane dla każdej wywołanej akcji.
Czy istnieje sposób, aby uniemożliwić zastosowanie niektórych z tych filtrów podczas wywoływania strony dziennika błędów Elmah.Mvc.ElmahController
(foo.com/elmah
)?
Test jak poniżej działa, oczywiście, ale szukam bardziej eleganckiego sposobu, który nie wymagałby modyfikacji filtra (ani kodu źródłowego z Elmah/Elmah MVC). Czy to możliwe?
public class FooAttribute : FilterAttribute, IActionFilter
{
// ...
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.Controller is ElmahController)
{
return;
}
// do stuff
}
}
Wiem, że atrybuty can't be added or removed at runtime.
myślałem owijania
ElmahController
w nowym, gdzie mogę dodać filtr wykluczeń, ale nie jestem pewien, w jaki sposób (jeśli to możliwe), aby zmienićweb.config
odwołać to opakowanie zamiast oryginalnego sterownika.
Sprawdź to - http: // s tackoverflow.com/questions/9953760/how-to-disable-a-global-filter-in-asp-net-mvc-selectively – malkam
@malkam Znam ten. Problem polega na tym, że polega to na dekorowaniu akcji atrybutem, tj. Modyfikowaniu kodu źródłowego Elmah, czego nie chcę robić z oczywistych powodów. –
to rozwiązanie nie wydaje mi się tak straszne. Prawdopodobnie zrobiłbym to jednak pozytywnie: 'if (kontrolerem jest ElmahController) {// powrót bez żadnych specjalnych akcji ' – DLeh