Esta documentación está en fase de desarrollo y puede contener errores.

ASP.NET Core

Middleware y utilidades para apps ASP.NET Core sobre Dinaup: gate de mantenimiento, correlación de logs y endpoints de entorno y versión.

El módulo dinaup.aspnet del paquete Dinaup aporta middleware y extensiones para integrar la plataforma en una aplicación ASP.NET Core: propagación de correlación entre servicios, endpoints de estado y un gate de mantenimiento cuando la conexión con Dinaup no está disponible.

using Dinaup;

Correlación de logs entre servicios

CorrelationIdMiddleware propaga un identificador de correlación por petición. Lee el header X-Correlation-Id; si no viene, genera uno. Lo empuja al LogContext de Serilog como propiedad correlation_id (así todos los logs de esa petición lo llevan) y lo devuelve en el header de respuesta para que el cliente o el siguiente servicio lo reutilicen.

app.UseCorrelationId();

Constantes públicas: CorrelationIdMiddleware.HeaderName (X-Correlation-Id) y CorrelationIdMiddleware.PropertyName (correlation_id). El id generado es un hex de 16 caracteres.

Combínalo con Dinaup.Logs: con la correlación en el LogContext, cada línea de log de la petición se puede rastrear de punta a punta entre servicios.

Endpoints de entorno y versión

MapDinaupEnv registra dos endpoints GET de solo lectura para monitorización y despliegue:

app.MapDinaupEnv();
RutaRespuesta
GET /Version{ "version": "10.15.0.8" }
GET /Env{ "app", "version", "env", "host", "loglvl" }

/Env devuelve el nombre de la app, la versión, el entorno (dev/staging/prod), el hostname y el nivel de log activo. Útil para comprobar de un servicio en marcha qué versión y en qué entorno corre.

Gate de mantenimiento

DinaupWebMiddleware corta el tráfico cuando el cliente Dinaup no está conectado. Si no hay conexión (o no hay sesión por defecto), responde 503 Service Unavailable con una página de mantenimiento que se recarga sola. Si hay conexión, refresca la sesión web y continúa la tubería.

app.UseMiddleware<DinaupWebMiddleware>();

Regístralo después de tener el cliente Dinaup en el contenedor de servicios: el middleware recibe el DinaupClientC y la sesión web por inyección al invocarse.

Otras piezas

  • SingleExecutionControllerAttribute — atributo para acciones de controlador que impide su ejecución concurrente. Devuelve 429 Too Many Requests si la acción ya está en curso o si no ha pasado el intervalo mínimo (new SingleExecutionControllerAttribute(minIntervalSeconds)).
  • TurnstileValidator — validación de Cloudflare Turnstile para proteger formularios públicos.
  • Helpers de HttpRequest/HttpContextReadGet, ReadPost, ReadGetOrPost, GetUserIP, GetUserAgent, GetHost, GetUserCountry para leer parámetros y datos de la petición detrás de proxies y Cloudflare.

On this page