我有一个 ASP.NET Core 6 Web API,并且需要在某些情况下设置 Connection: Close
header ,以便将某些旧终端(客户端)置于维护模式。
我通常可以设置 header ,但 Connection: Close
header 会被删除,并且不是响应的一部分。
这是我的 Controller :
[ApiController]
[Route("[controller]")]
public class HeaderTestController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
Response.Headers.Add("Foo", "Bar"); // part of the response
Response.Headers.Add("Connection", "close"); // NOT part of the response
return NoContent();
}
}
这就是我的 Program.cs
的样子:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
当我调用 API 方法时,它返回 foo
header ,但省略 Connection
header :
知道哪个组件正在删除 Connection
header 以及如何绕过它?
最佳答案
检查HttpProtocol.cs中的方法CreateResponseHeaders
。它正在此处删除此 header 。而且我认为没有任何方法可以绕过它。
并且仅当客户端发出 http/2 或 http/3 请求时才会删除此内容。如果您的旧客户端仍在使用 http/1.1,那么它不会被删除。
希望这有帮助。
关于c# - 无法在 ASP.NET Core 6 中设置响应 header "Connection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73433302/