Asp.net

為什麼從 ASP.NET Web API 中的請求中剝離內容範圍標頭?

  • June 22, 2013

我正在創建一個 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 的三個子類:

  • “5.3 請求頭欄位”和“4.5 通用頭欄位”的 HttpRequestHeaders
  • “6.2 響應頭欄位”和“4.5 通用頭欄位”的 HttpResponsHeaders
  • “7.1 實體標頭欄位”的 HttpContentHeaders

這些是 MSDN 中三個類的逐字描述(連結是我的):

請注意,雖然 MSDN 類描述有點錯誤 - RFC 中沒有 Content Headers 定義,但很明顯它們的意思是 Entity Headers。

引用自:https://stackoverflow.com/questions/13129481