Wie entferne ich den Serverheader mit Middleware?

In ASP.NET Core 1.0 enthält jede Antwort den HeaderServer: Kestrel. Ich möchte diesen Header zusammen mit anderen Headern wie @ entferneX-Power-By Verwenden von Middleware.

Ich weiß, dass wir den Kestrel-Header in der Host-Konfiguration entfernen können, indem wir Folgendes festlegen, aber ich möchte es mit Middleware tun (tatsächlich können wir dies tun, wenn wir Httpmodule haben, also lerne ich dasselbe). Ich habe mein bisschen versucht, es hat nicht funktioniert.

new WebHostBuilder()
    .UseKestrel(c => c.AddServerHeader = false)

Versuchter Code:

public class HeaderRemoverMiddleware
{
    private readonly RequestDelegate _next;
    public HeaderRemoverMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext httpContext)
    {
        httpContext.Response.OnStarting(callback: removeHeaders, state: httpContext);
        await _next.Invoke(httpContext);
    }

    private Task removeHeaders(object context)
    {
        var httpContext = (HttpContext)context;
        if (httpContext.Response.Headers.ContainsKey("Server"))
        {
            httpContext.Response.Headers.Remove("Server");
        }
        return Task.FromResult(0);
    }
}

public static class HeaderRemoverExtensions
{
    public static IApplicationBuilder UseServerHeaderRemover(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<HeaderRemoverMiddleware>();
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage