Slovenská verzeSlovensky

Globální filtry MVC vs. Web API

Registrace globálních filtrů u MVC projektů a projektů Web API se trochu liší. Zde je shrnutí rozdílů, ukázané na filtru použitelném pro logování chyb.

Miroslav Holec

Miroslav Holec

19. září. 2014
upraven 29. března. 2016

Tento článek je již velmi zastaralý. Zastaralé články nemusí popisovat aktuální stav technologií, nejideálnější řešení a můj aktuální pohled na danou technologii.

MVC

Seznam filtrů je v kolekci GlobalFilters.Filters a tentokrát se jedná o kolekci typu GlobalFilterCollection. Tato kolekce tedy umožňuje enumerovat jednotlivými Filter objekty.

Global.asax

protected void Application_Start()
{
	FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
}

App_Start/FilterConfig.cs

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleMvcError());
    }
}

HandleMvcError.cs

public class HandleMvcError : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
		// log error here
	}
}

WebApi

Seznam filtrů je uložen v kolekci GlobalConfiguration.Configuration.Filters a jedná se o kolekci typu HttpFilterCollection. Umožňuje enumerovat jednotlivými FilterInfo objekty.

Global.asax

protected void Application_Start()
{
	FilterConfig.RegisterGlobalFilters(GlobalConfiguration.Configuration.Filters);
}

App_Start/FilterConfig.cs

public class FilterConfig
{
    public static void RegisterGlobalFilters(HttpFilterCollection filters)
    {
        filters.Add(new HandleWebApiError());
    }
}

HandleWebApiError.cs

public class HandleWebApiError : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext filterContext)
    {
        throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
        {
            Content = new StringContent(filterContext.Exception.Message),
            ReasonPhrase = "Internal server error"
        });
    }
}

👨‍🎓 Webináře pro vývojáře

Vzdělávat se můžete i z pohodlí domova. Klasická školení jsem doplnil o související témata, která si můžete poslechnout v podobě živých webinářů. Přidejte se téměř 200 vývojářům, kteří se již připojili k mým webinářům!

Termín Místo
🍀 Konzumace REST API v .NET Core červen 2020 on-line více
🍀 Nástroje a šablony projektů v .NET Core červen 2020 on-line více
🍀 Entity Framework Core červen 2020 on-line více
Loading
Otevřít chat