我正在创建一个 API,可以通过分块方式上传文件。
按照这个Stackoverflow问题和答案,内容范围标题似乎最适合这个。
但是,在控制器操作中,标头已被剥离,因此我无法访问它。 当我使用“范围”标头时,它可以在请求标头集合中使用。
有人知道为什么内容范围从请求中删除吗?
没有被剥离。在 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 的三个子类:
这些是 MSDN 中这三个类的逐字描述(链接是我的):
注意,虽然 MSDN 上的类描述有点错误 - RFC 中没有内容标头定义,但很明显它们指的是实体标头。