Iis 无法将响应标头连接设置为";“关闭”;在aspnet core 2.2中

Iis 无法将响应标头连接设置为";“关闭”;在aspnet core 2.2中,iis,.net-core,header,asp.net-core-2.2,kestrel-http-server,Iis,.net Core,Header,Asp.net Core 2.2,Kestrel Http Server,我有一个场景,我想优雅地关闭一个aspnet核心web服务器。我们的想法是,在某一点设置响应头连接:关闭,然后当没有更多打开的连接时,web服务器关闭 我们通过中间件添加头部。其他标题添加得很好,但连接似乎无法更改。 我们在aspnet 4.7中也做了类似的事情,在该应用程序中,使用ActionFilterAttribute将响应头设置为close很好 我使用fiddler查看标题是否在那里,但它也没有显示在那里 无法在aspnet core 2.2中的响应中设置连接头吗 public clas

我有一个场景,我想优雅地关闭一个aspnet核心web服务器。我们的想法是,在某一点设置响应头连接:关闭,然后当没有更多打开的连接时,web服务器关闭

我们通过中间件添加头部。其他标题添加得很好,但连接似乎无法更改。 我们在aspnet 4.7中也做了类似的事情,在该应用程序中,使用ActionFilterAttribute将响应头设置为close很好

我使用fiddler查看标题是否在那里,但它也没有显示在那里

无法在aspnet core 2.2中的响应中设置连接头吗

public class ResponseHeaderMiddleware
{
    private readonly RequestDelegate _next;
    private readonly IConfig _config;

    public ResponseHeaderMiddleware(RequestDelegate next, IConfig config)
    {
        _next = next;
        _config = config;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        context.Response.OnStarting(state =>
        {
            var httpContext = (HttpContext)state;
            if (_config.HttpSendConnectionClose)
            {
                httpContext.Response?.Headers.Add("Connection", new string[] { "close" });
            }
            //Header that is added just fine.
            httpContext.Response.Headers.Add("Site", "Simple-Talk");
            return Task.FromResult(0);
        }, context);

        await _next.Invoke(context);
    }

你能告诉我你中间线的图标是什么吗?我发现您首先检查了_config.HttpSendConnectionClose。我猜_config.HttpSendConnectionClose的结果是false,因此它没有添加连接头。我建议您可以尝试设置一个断点来调试它。它只是一个注入的服务,当我们要添加连接:close头时,HttpSendConnectionClose布尔值被设置为true。如果我们在同一If子句中设置了任何其他随机头,它会出现在响应中。我没有在IIS上使用进程内托管,当我更改为时,该头似乎出现了。您能告诉我有关您的服务器的更多详细信息吗?您是否使用服务托管asp.net核心应用程序或其他内容?我已经在IIS上运行了测试,它包含连接头。您能告诉我您的middlewire中的IConfig是什么吗?我发现您首先检查了_config.HttpSendConnectionClose。我猜_config.HttpSendConnectionClose的结果是false,因此它没有添加连接头。我建议您可以尝试设置一个断点来调试它。它只是一个注入的服务,当我们要添加连接:close头时,HttpSendConnectionClose布尔值被设置为true。如果我们在同一If子句中设置了任何其他随机头,它会出现在响应中。我没有在IIS上使用进程内托管,当我更改为时,该头似乎出现了。您能告诉我有关您的服务器的更多详细信息吗?您是否使用服务托管asp.net核心应用程序或其他内容?我已经在IIS上运行了测试,它包含连接头。