【问题标题】:How to disable Keep-Alive in IIS conditionally?如何有条件地在 IIS 中禁用 Keep-Alive?
【发布时间】:2017-04-07 08:27:17
【问题描述】:

我的情况如下:我有一个 ASP.NET Core REST API,它使用通过 IIS 反向代理的 Kestrel(通过 AspNetCoreModule)。在一个特殊的端点(硬件设备需要)上,我发送一个 'Connection: close'-HTTP 标头。在所有其他端点上,我不发送此标头。因此,当我以独立模式(没有 IIS)启动 REST API 时,一切都按预期工作。但是,一旦我在 IIS 上运行它,IIS 就不会转发 Connection 标头,尽管所有其他标头都已正确转发。禁用所有端点的保持活动不是一种选择。到目前为止,我尝试的是为 IIS 安装重写模块并创建一个出站规则,它匹配连接标头设置为关闭并在匹配时重置它。似乎 IIS 忽略了 RESPONSE_ConnectionHTTP_CONNECTION 服务器变量(我尝试了具有相同规则的其他标头并且它有效)。

最好的解决方案是甚至不安装重写模块。 提前感谢任何解决方案。

【问题讨论】:

  • 你解决过这个问题吗?

标签: iis asp.net-core reverse-proxy keep-alive kestrel-http-server


【解决方案1】:

你有没有试过这个:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
       app.UseCors(option =>
            option.AllowAnyHeader()
                }));
     }

app.UseCors 应该在app.UseRouting(); 之后

你也可以使用:

.WithExposedHeaders(new string[] {
                    "HeaderName",

用于自定义标题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 2013-05-24
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多