2012-10-29 8 views
12

私はチャンク形式でファイルをアップロードすることができるAPIを作成しています。ASP.NET Web APIの要求からコンテンツ範囲ヘッダーが削除されるのはなぜですか?

このStackoverflow question and answerの場合、内容範囲ヘッダーがこれに最も適しているようです。

ただし、コントローラのアクションでは、ヘッダーは削除されており、アクセスできません。 'range'ヘッダーを使用すると、リクエストヘッダーコレクションで使用できます。

Content-RangeがRequestsから削除された理由は誰ですか?

答えて

8

これは取り除かれません。 Request.Content.Headersでそれを探します。エンティティヘッダーをRequest.Content.Headersに移動することで、ヘッダーをHTTP/1.1仕様に揃えたようです。
サンプルリクエストで試してみましたが、そこに見つかりました。

RFC 2616の関連セクションを読んだ後、この変更が見つかりました。私は最近、主著者のフィールディングもRESTアーキテクチャースタイルの発明者であり、ASP.NET Web APIを使用してそのスタイルに従おうとしているため、この問題を解決しています。

「要求」、「応答」、「一般」(要求と応答の両方で使用されますが、エンティティには関連しません)と「エンティティ」ヘッダーが区別されています。

ASP.NETチームはHttpHeadersの3つのサブクラスを作成し、より良いRFCをミラーリングするクラスモデルを改訂しているかのようになります。

  • HttpRequestHeaders「5.3リクエストヘッダフィールド」と「4.5一般 ヘッダフィールド」のために
  • HttpResponsHeaders "6.2レスポンスヘッダフィールド" と "4.5一般 ヘッダフィールド" の
  • HttpContentHeaders
"7.1エンティティヘッダフィールド" のために

MSDNクラスの説明は少し間違っていますが、RFCにはコンテンツヘッダーの定義はありませんが、エンティティヘッダーを意味することは明らかです。

+0

great find。それは確かに賢く隠されていた。 – Toad

+0

あなたはcontent-rangeがアップロード中にファイルのチャンクを送信するための適切なヘッダーであることに同意しますか?このヘッダーと範囲ヘッダーの間に疑問がありました。 – Toad

+1

私はこの経験はありませんが、spec - yesを読んでいます。範囲はリクエストヘッダです - 範囲を要求するためのものです。Entity HeaderであるContent-Rangeは、PUTリクエスト(クライアントが既存のリソースの一部を置換するために送信されるチャンクをサーバに識別させるため)とGETレスポンス(サーバがチャンクが返されているクライアント)。 –

関連する問題