我正在创建一个 API,可以在其中以分块方式上传文件。
通过这个Stackoverflow question and answer,内容范围标题似乎最适合这个。
但是,在控制器操作中,标题已被剥离,因此我无法访问它。当我使用“范围”标头时,它在请求标头集合中可用。
有人知道为什么从请求中删除 Content-Range 吗?
我正在创建一个 API,可以在其中以分块方式上传文件。
通过这个Stackoverflow question and answer,内容范围标题似乎最适合这个。
但是,在控制器操作中,标题已被剥离,因此我无法访问它。当我使用“范围”标头时,它在请求标头集合中可用。
有人知道为什么从请求中删除 Content-Range 吗?
它没有被剥离。在 Request.Content.Headers 中查找它。看起来他们将标头与 HTTP/1.1 规范对齐——将实体标头移动到 Request.Content.Headers。
我在一个示例请求中进行了尝试,并在那里找到了它。
在阅读了RFC 2616的相关部分后,我发现了这个变化。我最近一直在讨论它,因为主要作者 Fielding 也是 REST 架构风格的发明者,我正在尝试使用 ASP.NET Web API 来遵循这种风格。
我意识到“请求”、“响应”、“一般”(用于请求和响应但与实体无关)和“实体”标头之间存在区别。
看起来 ASP.NET 团队修改了类模型以更好地反映 RFC,创建了 HttpHeaders 的三个子类:
这些是 MSDN 中三个类的逐字描述(链接是我的):
请注意,虽然 MSDN 类描述有点错误 - RFC 中没有 Content Headers 定义,但很明显它们的意思是 Entity Headers。