Los middlewares en ASP.NET son clave para controlar cada paso de un request hasta la response. Aquí verás cómo funciona el pipeline, por qué el orden de ejecución importa y cómo crear un custom middleware para registrar rutas y códigos de estado, con una configuración limpia y mantenible.
¿Qué es un middleware y cómo opera el pipeline en ASP.NET?
Un middleware procesa el request desde que llega hasta que se envía la response. Cada componente ejecuta un fragmento de lógica (validación, transformación de datos, consultas) y luego llama al siguiente. Al finalizar, la respuesta recorre los mismos middlewares en sentido inverso.
La secuencia completa se denomina tubería o pipeline.
Puede devolver datos o errores, según la lógica aplicada.
Incluye componentes como CORS, autenticación, autorización, custom middlewares y el middleware de endpoints.
Idea clave: el orden garantiza que la API procese correctamente la petición, valide accesos y ejecute la lógica del endpoint adecuado.
¿Dónde ordenar middlewares en program.cs y qué efectos tiene?
La configuración vive en el archivo program.cs, en la sección donde se agregan los middlewares en orden. Mantener ese orden asegura que el request se valide y rote correctamente hacia los endpoints.
La ejecución de endpoints se produce con MapControllers.
Cerca de UseAuthorization y MapControllers suelen ubicarse los custom middlewares para no romper la secuencia.
Es recomendable no escribir middlewares anónimos extensos directamente en program.cs: mejor moverlos a clases dedicadas.
En la demostración, un middleware imprimió en consola el path del request y el status code de la response. Ejemplos observados:
Ruta “/api/weatherforecast” devolviendo 200.
Ruta “/api/weatherforecast/4” devolviendo 200.
Ruta con parámetro inválido, devolviendo BadRequest.
¿Cómo crear un custom middleware y extender su uso?
Crear un middleware puede hacerse de forma inline con Use o moviéndolo a una clase propia para un mejor diseño. Ambos enfoques usan dos piezas: el context y el next.
¿Cómo usar Use con context y next?
Este patrón captura el path, invoca al siguiente middleware y luego lee el status code de la response.