Middleware — components that form the HTTP pipeline.
Request pipeline:
Request → [Middleware 1] → [Middleware 2] → ... → Response
Custom middleware:
1public class RequestTimingMiddleware2{3 private readonly RequestDelegate _next;4 private readonly ILogger<RequestTimingMiddleware> _logger;56 public RequestTimingMiddleware(7 RequestDelegate next,8 ILogger<RequestTimingMiddleware> logger)9 {10 _next = next;11 _logger = logger;12 }1314 public async Task InvokeAsync(HttpContext context)15 {16 var stopwatch = Stopwatch.StartNew();17 await _next(context); // Call next middleware18 stopwatch.Stop();19 _logger.LogInformation(20 $"{context.Request.Path} took {stopwatch.ElapsedMilliseconds}ms");21 }22}
Registration:
1// Extension method2public static class RequestTimingExtensions3{4 public static IApplicationBuilder UseRequestTiming(5 this IApplicationBuilder builder)6 {7 return builder.UseMiddleware<RequestTimingMiddleware>();8 }9}1011// Usage12app.UseRequestTiming();
Built-in middleware: