Middleware para establecer la respuesta ContentType
En nuestra aplicación web basada en ASP.NET Core, queremos lo siguiente: ciertos tipos de archivos solicitados deberían recibir ContentType personalizados en respuesta. P.ej..map
debería mapear aapplication/json
. En "completo" ASP.NET 4.xy en combinación con IIS fue posible utilizar web.config<staticContent>/<mimeMap>
para esto y quiero reemplazar este comportamiento con un middleware ASP.NET Core personalizado.
Así que probé lo siguiente (simplificado por brevedad):
public async Task Invoke(HttpContext context)
{
await nextMiddleware.Invoke(context);
if (context.Response.StatusCode == (int)HttpStatusCode.OK)
{
if (context.Request.Path.Value.EndsWith(".map"))
{
context.Response.ContentType = "application/json";
}
}
}
Desafortunadamente, tratando de establecercontext.Response.ContentType
después de invocar al resto de la cadena de middleware se obtiene la siguiente excepción:
System.InvalidOperationException: "Headers are read-only, response has already started."
¿Cómo puedo crear un middleware que resuelva este requisito?