Custom Middleware In Asp.net Core Web API

Sardar Mudassar Ali Khan
2 min readJun 8, 2023

In the ASP.NET Core Web API, middleware is a component that sits in the request pipeline and processes HTTP requests and responses. It allows you to add custom logic to handle various aspects of the request/response flow, such as authentication, logging, error handling, and more.

To create custom middleware in ASP.NET Core Web API, follow these steps:

1. Create a new class that will serve as your middleware component. The class should have a constructor that takes a `RequestDelegate` parameter. The `RequestDelegate` represents the next middleware component in the pipeline.


public class CustomMiddleware
{
private readonly RequestDelegate _next;
public CustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// Custom logic to be executed before the next middleware
// …
await _next(context);
// Custom logic to be executed after the next middleware
// …
}
}

2. Implement the `InvokeAsync` method in your middleware class. This method contains the actual logic that will be executed for each HTTP request. You can perform any custom operations here, such as modifying the request/response, logging, or checking authentication.

3. Open the `Startup.cs` file in your ASP.NET Core Web API project. In the `Configure` method, add your middleware component to the request pipeline using the `UseMiddleware` extension method.


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Other middleware components…
app.UseMiddleware<CustomMiddleware>();
// Other middleware components…
}

Make sure to add your middleware components in the desired order within the pipeline. The order of middleware components matters as they are executed sequentially.

That’s it! Your custom middleware is now part of the request pipeline in your ASP.NET Core Web API. You can add additional custom middleware components following the same pattern.

Inside your `InvokeAsync` method, you have access to the `HttpContext` object, which provides information about the current request and response. You can use this object to inspect and modify various aspects of the request and response.

Note that middleware components can be used for cross-cutting concerns and can be reused across multiple controllers or actions. They provide a modular way to add custom functionality to your ASP.NET Core Web API.

--

--

Sardar Mudassar Ali Khan

8x-Microsoft Certified Senior Software Engineer | MCT|MCT |Microsoft Certified Cloud Solution Architect | Microsoft Certified Cloud Developer | Technical Author