Middleware filter in ASP.NET Core

October 28, 2016 by Anuraj

C# ASP.NET Core Middleware filter Middleware

This post is about a new feature in ASP.NET MVC, Middleware filter. Middleware typically sits in the global request handling pipeline. If you want to apply middleware to a specific controller or action method, you can use this feature. This feature only available with ASP.NET Core MVC 1.1. Long back I created a middleware (HTML Minification Middleware), which helps to minify generated HTML of an action. After few days I got a request to implement configuration options, which helps to exclude certain actions from minification. Now I can use Middleware filters instead of configuring the options.

To use middleware as a filter you first create a type with a Configure method that specifies the middleware pipeline that you want to use. I am not sure about the naming conventions, I just followed the one provided by Microsoft.

using Microsoft.AspNetCore.Builder;
public class HtmlMinificationPipeline
{
    public void Configure(IApplicationBuilder applicationBuilder)
    {
        applicationBuilder.UseHTMLMinification();
    }
}

Now you can use this type in specific controller class or action methods like this.

[MiddlewareFilter(typeof(HtmlMinificationPipeline))]
public class HomeController : Controller
{
}

or

public class HomeController : Controller
{
    [MiddlewareFilter(typeof(HtmlMinificationPipeline))]
    public IActionResult Index()
    {
        return View();
    }
}

MiddlewareFilter attribute is only available, if you are using ASP.NET Core MVC 1.1.

You can find more features and details about ASP.NET Core 1.1 Preview 1 release here

Happy Programming :)

Support My Work

If you find my content helpful, consider supporting my work. Your support helps me continue creating valuable resources for the community.

Share this article

Found this useful? Share it with your network!

Copyright © 2025 Anuraj. Blog content licensed under the Creative Commons CC BY 2.5 | Unless otherwise stated or granted, code samples licensed under the MIT license. This is a personal blog. The opinions expressed here represent my own and not those of my employer. Powered by Jekyll. Hosted with ❤ by GitHub