Ir al contenido
learn

12. El pipeline de middleware

El middleware de ASP.NET Core es control de flujo anidado. El código antes de next se ejecuta al entrar; el código posterior, al salir. El orden de registro es comportamiento observable.

GET /ok: 200; outer:before -> endpoint -> outer:after

El gate hace short-circuit de /blocked:

GET /blocked: 429; outer:before -> gate:short-circuit -> outer:after

El endpoint no aparece porque el gate no llama next. El middleware exterior sí completa su camino de respuesta.

  • el handler de excepciones debe envolver el código que convierte;
  • forwarded headers preceden a lectores de scheme, host o client IP;
  • routing selecciona endpoint antes de autorización basada en metadatos;
  • autenticación establece principal antes de autorización;
  • un Run terminal finaliza su rama.

Map ramifica por ruta y MapWhen por predicado. Una rama no es un nuevo proceso ni una frontera de confianza.

Ventana de terminal
dotnet run --project code/csharp-advanced/Advanced -c Release -- l12

La salida verificada es expected/l12.txt.

  1. Pon el handler de excepción después de un endpoint que lanza.
  2. Añade un correlation ID y decide cómo tratar uno proporcionado por el cliente.
  3. Añade una rama /admin y prueba que la autorización se ejecuta.
Soluciones
  1. Solo puede envolver componentes registrados después; muévelo antes.
  2. Valida la entrada, consérvala solo como baggage no confiable y genera el ID de servidor para logs.
  3. Coloca autorización en la rama o usa metadatos de endpoint. La ruta sola no concede autoridad.