In unserer ASP.NET Core-basierten Webanwendung möchten wir Folgendes: Bestimmte angeforderte Dateitypen sollten benutzerdefinierte ContentType-Typen als Antwort erhalten. Z.B. .map
sollte application/json
zugeordnet werden. In "full" ASP.NET 4.x und in Kombination mit IIS konnte dafür web.config <staticContent>/<mimeMap>
verwendet werden und ich möchte dieses Verhalten durch eine benutzerdefinierte ASP.NET Core-Middleware ersetzen.Middleware zum Festlegen der Antwort ContentType
Also versuchte ich die folgende (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 context.Response.ContentType
nach dem Aufruf der Rest der Middleware-Kette Ausbeuten an folgende Ausnahme zu setzen versuchen:
System.InvalidOperationException: "Headers are read-only, response has already started."
Wie kann ich eine Middleware erstellen, die diese Anforderung erfüllt?