为什么 ASP.NET Web API 中的内容范围标头会从请求中删除?

问题描述 投票:0回答:1

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

按照这个Stackoverflow问题和答案,内容范围标题似乎最适合这个。

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

有人知道为什么内容范围从请求中删除吗?

asp.net .net asp.net-mvc-4 asp.net-web-api
1个回答
11
投票

没有被剥离。在 Request.Content.Headers 中查找它。看起来 ASP.NET 团队已将标头与 HTTP/1.1 规范保持一致——将实体标头移至 Request.Content.Headers。
我在示例请求中尝试了它并在那里找到了它。

我在阅读了RFC 2616的相关部分后发现了这个变化。我最近一直在研究 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 中没有内容标头定义,但很明显它们指的是实体标头。

© www.soinside.com 2019 - 2024. All rights reserved.