Middleware — request/response pipeline.
Basic middleware:
1public class RequestTimingMiddleware2{3 private readonly RequestDelegate _next;45 public RequestTimingMiddleware(RequestDelegate next)6 {7 _next = next;8 }910 public async Task InvokeAsync(HttpContext context)11 {12 var sw = Stopwatch.StartNew();13 await _next(context);14 sw.Stop();15 context.Response.Headers.Add("X-Elapsed", sw.ElapsedMilliseconds.ToString());16 }17}
Registration:
1app.UseMiddleware<RequestTimingMiddleware>();
Key: Middleware for cross-cutting concerns.