Slovenská verze


Globální filtry MVC vs. Web API

Miroslav Holec

Miroslav Holec

19. září. 2014 , aktualizace 29. března. 2016

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.

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"
        });
    }
}

TOP Termíny školení

ASP.NET Core se dočkal již své třetí verze a nabízí řadu možností pro vývoj webových aplikací a služeb. I v roce 2020 mám vypsané termíny na nejrůznější témata od základů .NET Core přes vývoj REST API až po mikroslužby pomocí gRPC.

Termín Místo
🍀 Novinky a změny v ASP.NET Core 3.x leden 2020 Praha více
🍀 Vývoj REST API v .NET Core (třídenní) leden 2020 Praha více
🍀 Vývoj aplikací v ASP.NET Core březen 2020 Praha více
🍀 Microservices v ASP.NET Core gRPC březen 2020 Praha více
🍀 Vývoj REST API v .NET Core (dvoudenní) březen 2020 Praha více
🍀 Tipy a triky pro ASP.NET Core březen 2020 Praha více

👨‍🎓 Čerstvá školení 2020
👍 Vývoj aplikací v ASP.NET Core
👍 Vývoj REST služeb v .NET Core
👍 Microservices v ASP.NET Core gRPC
👍 Tipy a triky v ASP.NET Core
👍 Změny v ASP.NET Core 3.x