[.NET/.NET Core]ASP.NET Core 应用程序中如何向中间件中添加自定义的响应头呢?
2.28K 次浏览
在ASP.NET Core Web API的应用程序中开发,自定义了一个中间件,现在需要在这个中间件中添加响应头信息,记录中间件处理数据的耗时,如下:
public class ProcessingTimeMiddleware
{
private readonly RequestDelegate _next;
public ProcessingTimeMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var watch = new Stopwatch();
watch.Start();
await _next(context);
context.Response.Headers.Add("X-Processing-Time-Milliseconds", new[] { watch.ElapsedMilliseconds.ToString() });
}
}
但是当程序运行后,会抛出如下的异常:
System.InvalidOperationException: Headers are readonly, reponse has already started.
那么,在ASP.NET Core 或者 ASP.NET Core Web API的应用程序中如何向在中间件中添加自定义的响应头呢?