2009-08-26 3 views
9

サーバが再開機能をサポートしているかどうかを知る方法があるかどうかを知りたいと思います。サポートされている場合、どのように再開リクエストを送信しますか?HttpWebRequestまたはWebRequest - ASP.NETを再開する

私は私のASP.NETページは私に、サーバーからのダウンロードを行うことができます解決策を探していた、「rapidleech」のようなものが今日ありませんが、私は私が要求してるサーバーかどうかを確認したいと思いますダウンロードは機能再開をサポートします。

答えて

24

ファイルを再開するには、Range HTTPヘッダーを使用してダウンロードするファイルのバイト範囲を指定します。これは.NETでHttpWebRequest.AddRange機能で実行できます。例えば

request.AddRange(1000); 

は、ファイルの1000番目のバイトで送信を開始するには、サーバを教えてくれます。

サーバーがRangeヘッダーをサポートしている場合、通常の200(OK)の代わりにHTTPステータスが206(部分コンテンツ)のコンテンツが送信されます。 HTTP Specを参照してください。

サーバがダウンロードを試みる前に再開をサポートしているかどうかを確認するには、HttpWebRequestMethod「HEAD」を変更してください。サーバーは、再開をサポートする場合は206(部分コンテンツ)を返し、そうでない場合は200(OK)を返します。

+0

によって範囲特定の要求に関する詳細な情報を見つけることができ、サーバのdoesntの対応無しならば、それは通常の200が送信されますか? – Cleiton

+0

はい。 HTTP仕様によれば、サーバーは範囲をサポートしていない場合、すべてのコンテンツを含む通常の200を送信します。 最初のダウンロードで "Accept-Ranges"ヘッダーで指定したサーバーが送信範囲をサポートするかどうかを確認することもできます( "bytes"または "none")。このヘッダーは必須ではないため、「Accept-Ranges」ヘッダーがない場合は、範囲を受け入れることができます。 –

+0

@Adam、多くのありがとう! – Cleiton

関連する問題