0

私は現在、自分のマシンで実行され、ピア (他のマシン) がMicrosoft の BITSを使用して仮想ディレクトリからファイルをダウンロードできるようにする Owin 自己ホスト型 Web サービスに取り組んでいます。ダウンロードは比較的小さなファイルで機能しますが、大きなファイル (2Go 以上) をダウンロードする必要がある場合は常に、BITS から次のエラーが発生します。

「サーバーは必要な HTTP プロトコルをサポートしていません。バックグラウンド インテリジェント転送サービス (BITS) では、サーバーが Range プロトコル ヘッダーをサポートする必要があります。」

Owin で範囲リクエストを有効にする方法があるかどうか、または受信したリクエストで「データ チャンク」を手動で実装する必要があるかどうか疑問に思っていました。すべてのリクエストの内容をヘッダー「Accept-Ranges: bytes」に変更しても機能しないように見えるためです (魔法のようには機能しないと思いましたが、とにかく試してみました)。

サーバーが範囲リクエストをサポートしているかどうかを知る方法を見つける以外に、私がやろうとしていることに関する多くの情報を見つけることができませんでした.

私のものと似ているように見えるこの質問がありましたが、ヘッダーを適切に設定することに重点が置かれていました。コードが応答を返す前にファイルを分割するかどうか、またはどのように分割するかは実際には表示されません。IIS についても何かありましたが、私の Web サービスは IIS 上では実行されず、クライアントのマシン上で実行され、Windows サービスによってインスタンス化されます。

4

1 に答える 1

1

問題の解決策を見つけました。この件についてもう少し調査した結果、ASP.NET Http ハンドラーを通過するリクエストが Range 固有のリクエストをサポートしていないという、私が抱えていた問題を非常によくまとめているこの記事を発見しました。そのため、Web サービスでレンジ固有のリクエストのサポートを手動で実装する必要があります。

于 2015-07-21T18:52:07.627 に答える