在控制器中完成后,我try 修改一些中间件中的响应头,但收到错误消息:
System.InvalidOperationException: Headers are read-only, response has already started.
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.ThrowHeadersReadOnlyException()
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.Microsoft.AspNetCore.Http.IHeaderDictionary.set_Item(String key, StringValues value)
at EditResponseMiddleware.InvokeAsync(HttpContext context) in
控制器是默认的WeatherForecast控制器,此处不包括该控制器.
以下是触发异常的代码:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseMiddleware<EditResponseMiddleware>();
app.UseAuthorization();
app.MapControllers();
app.Run();
public class EditResponseMiddleware
{
private readonly RequestDelegate _next;
public EditResponseMiddleware( RequestDelegate next )
{
_next = next;
}
public async Task InvokeAsync( HttpContext context )
{
await _next( context );
context.Response.Headers["MyHeader"] = "Test";
}
}
有没有解决这个问题的办法,或者我们现在不打算修改响应的任何部分?