是否可以通过IIS从ASP.NET Core强制返回Connection标头?

问题描述

注意:这类似于this question,但与IIS有关,而不与Linux上的Azure应用服务有关。

我有一个用于上传大型文件的API端点。如果验证失败,文件名无效等,则不应上传文件。我们甚至接受校验和,如果文件已经存在,则跳过上传。

不幸的是,无论我在用户代码中做什么,Kestrel总是耗尽整个请求正文(有关详细信息,请参见this issue)。换句话说,即使我的代码没有读取响应主体并返回早期的错误响应,用户也必须在获得响应之前“上传”整个文件。在该期中,我收到一条提示,我可以返回一个Connection: close标头来避免这种情况。不幸的是,尽管在本地调试时在响应中收到标头,但通过IIS在生产环境中运行时却没有收到标头。换句话说,如果ASP.NET Core响应中存在该标头,则IIS似乎会删除它。

有什么方法可以通过IIS强制返回Connection: close头吗?

解决方法

我认为您可以尝试为asp.net核心应用程序禁用allowKeepAlive。

<system.webServer>
    <httpProtocol allowKeepAlive="false" />
</system.webServer>

enter image description here

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...