13

我正在创建一个 API,可以在其中以分块方式上传文件。

通过这个Stackoverflow question and answer,内容范围标题似乎最适合这个。

但是,在控制器操作中,标题已被剥离,因此我无法访问它。当我使用“范围”标头时,它在请求标头集合中可用。

有人知道为什么从请求中删除 Content-Range 吗?

4

1 回答 1

9

它没有被剥离。在 Request.Content.Headers 中查找它。看起来他们将标头与 HTTP/1.1 规范对齐——将实体标头移动到 Request.Content.Headers。
我在一个示例请求中进行了尝试,并在那里找到了它。

在阅读了RFC 2616的相关部分后,我发现了这个变化。我最近一直在讨论它,因为主要作者 Fielding 也是 REST 架构风格的发明者,我正在尝试使用 ASP.NET Web API 来遵循这种风格。

我意识到“请求”、“响应”、“一般”(用于请求和响应但与实体无关)和“实体”标头之间存在区别。

看起来 ASP.NET 团队修改了类模型以更好地反映 RFC,创建了 HttpHeaders 的三个子类:

  • “5.3 请求头字段”和“4.5 通用头字段”的 HttpRequestHeaders
  • “6.2 响应头字段”和“4.5 通用头字段”的 HttpResponsHeaders
  • “7.1 实体标头字段”的 HttpContentHeaders

这些是 MSDN 中三个类的逐字描述(链接是我的):

请注意,虽然 MSDN 类描述有点错误 - RFC 中没有 Content Headers 定义,但很明显它们的意思是 Entity Headers。

于 2012-10-31T23:40:36.987 回答