在我們基於ASP.NET Core的Web應用程序中,我們需要以下內容:某些請求的文件類型應該獲得自定義ContentType的響應。例如。 .map
應該映射到application/json
。在「完整的」ASP.NET 4.x和IIS的組合中,可以使用web.config <staticContent>/<mimeMap>
來實現這一點,我想用自定義的ASP.NET Core中間件替換這種行爲。設置響應的中間件ContentType
所以我嘗試了以下(簡化爲簡潔起見):
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";
}
}
}
不幸的是,試圖調用中間件鏈收益的其餘部分以下異常後設置context.Response.ContentType
:
System.InvalidOperationException: "Headers are read-only, response has already started."
如何我可以創建一個解決此要求的中間件嗎?