IIS 10.5 不传输编码块在 HTTP 请求中上传操作

问题描述

我们有一个在 IIS 10.5 上运行的 ASP.NET WEBAPI 应用程序,我们提供了一个上传文件 API。 因为,我们希望大文件超过 1 GB 左右,所以我们正在执行一些测试分块传输编码。 据观察,IIS 10.5 不接受将传输编码设置为分块的请求。

在 .NET Framework 端,我们确实可以选择使用“无缓冲”输入流来避免缓冲,这样,我们可以避免在接收端缓冲,但这与分块编码不同。

API 消费者应用程序发送具有分块传输编码集的请求,但这些请求失败。虽然可以要求消费者应用程序不要发送此标头,但这可能会在消费者端造成潜在问题,因为所有内容都在客户端缓冲,从而导致内存问题,最终可能会耗尽内存。

根据 HTTP 1.1,发送方和接收方都应支持分块编码。论坛中有一个论点,即分块编码仅适用于“响应”而不适用于“请求”。但在双方都支持这一点似乎是合乎逻辑的,HTTP 1.1 规范似乎在谈论两端,尽管没有明确提及。

例如,Apache HTTP 客户端在文件上传期间也支持分块编码。

有没有办法启用分块编码支持?或者是 IIS 10.5 不支持它的任何原因?非常感谢您对此的任何帮助/想法。

解决方法

IIS 中的 AspEnableChunkedEncoding 可以启用分块编码:

https://docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms526005(v=vs.90)

blog 中存在类似问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...