Middleware zum Festlegen der Antwort ContentType
In unserer auf ASP.NET Core basierenden Webanwendung möchten wir Folgendes: Bestimmte angeforderte Dateitypen sollten benutzerdefinierte ContentTypes als Antwort erhalten. Z.B..map
sollte zu @ passapplication/json
. In "vollem" ASP.NET 4.x und in Kombination mit IIS konnte web.config @ verwendet werd<staticContent>/<mimeMap>
und ich möchte dieses Verhalten durch eine benutzerdefinierte ASP.NET Core-Middleware ersetzen.
So habe ich folgendes ausprobiert (der Kürze halber vereinfacht):
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";
}
}
}
Leider versucht @ zu setzcontext.Response.ContentType
nach dem Aufrufen des Restes der Middleware-Kette ergibt sich folgende Ausnahme:
System.InvalidOperationException: "Headers are read-only, response has already started."
Wie kann ich eine Middleware erstellen, die diese Anforderung löst?