Server 从服务结构上的自托管owin webapi中删除服务器头

Server 从服务结构上的自托管owin webapi中删除服务器头,server,header,asp.net-web-api2,owin,service-fabric-stateless,Server,Header,Asp.net Web Api2,Owin,Service Fabric Stateless,我一直在尝试摆脱在我的自托管webapi2应用程序上返回“Microsoft HTTPAPI/2.0”的“服务器”标题,该应用程序作为azure service fabric上的无状态服务托管。我尝试过但不起作用的事情: 我试图实现IFilter以从webapi服务中删除头,但是 调试该应用程序表明,此时不存在要删除的标题 还尝试替换导致将新值附加到“Microsoft HTTPAPI/2.0”值的值 我试图在out app.config文件中设置web服务器标志(有点像将其用作web.conf

我一直在尝试摆脱在我的自托管webapi2应用程序上返回“Microsoft HTTPAPI/2.0”的“服务器”标题,该应用程序作为azure service fabric上的无状态服务托管。我尝试过但不起作用的事情:

我试图实现IFilter以从webapi服务中删除头,但是 调试该应用程序表明,此时不存在要删除的标题

还尝试替换导致将新值附加到“Microsoft HTTPAPI/2.0”值的值

我试图在out app.config文件中设置web服务器标志(有点像将其用作web.config),但没有成功

我试图覆盖OWIN管道的OnSerdingHeaders事件,但“Server”头并没有被删除,它显然是在更晚的阶段添加的

我尝试了在网上找到的关于使用应用程序生成器在代码中清除服务器的所有建议

我尝试实现一个自定义的委托处理程序来清除/覆盖头部,但也没有成功

我甚至试图篡改我的调试机器上的注册表只是为了检查,但也没有成功

我的笔测试员坚持要把它扔掉。还有别的办法吗


提前谢谢

以下中间件解决了该问题:

public class RemoveServerHeaderMiddleware
{
    private readonly RequestDelegate next;

    public RemoveServerHeaderMiddleware(RequestDelegate next)
    {
        this.next = Argument.NotNull(next, nameof(next));
    }

    public async Task Invoke(HttpContext context)
    {
        context.Response.OnStarting(() =>
        {
            context.Response.Headers.Add("Server", string.Empty);

            return Task.CompletedTask;
        });

        await this.next(context).ConfigureAwait(false);
    }
}
当然,不要忘记注册中间件:

app.UseMiddleware<RemoveServerHeaderMiddleware>();
app.UseMiddleware();
解决方案基于以下链接:


嗨!我目前正在处理同样的问题。到目前为止,您是否找到了任何解决方案?MS的官方反馈是“这不受支持”