この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19401|答える: 2

[ASP.NET] ASP.NET HttpListenerを使ってファイルのブレークポイントを再開します

[リンクをコピー]
掲載地 2019/11/27 10:42:41 | | |
ブレークポイント継続の原理は非常にシンプルで、HTTPのリクエストとリプライメッセージのヘッダーは通常のダウンロードとは異なります。
通常の方法でサーバー上で文書をリクエストする場合、リクエスト内容とサーバーが受信した内容は以下の通りです。
リクエストヘッダー:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
レスポンスヘッダー:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

サーバーがブレークポイント再開をサポートする場合、リクエストと応答は以下の通りです。
リクエストヘッダー:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
レスポンスヘッダー:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

2つのメッセージの異なる部分は赤い部分で示されています。 以下が見て取れます:
レンジヘッダーは顧客の希望するダウンロード場所を特定するために使用されます。
サーバーの応答番号が200の場合は、ダウンロードがファイルのヘッダーから始まり、206はファイルの特定の場所から転送が始まることを意味します。
つまり、ブレークポイント再開をサポートする場合は、ファイルの任意の部分からダウンロードを始められますが、通常の方法はファイルヘッダーからしかダウンロードできません。
サーバーがブレークポイント再開をサポートするためには、以下の問題を解決する必要があります:

1。 再開リクエストの場合は、クライアントが求めるファイル範囲を取得する必要があります。
上記の分析からわかるように、クライアントがブレークポイントを送信している際、パケットヘッダーにRangeフィールドが追加され、それがブレークポイント伝送要求かどうかを次のように判断できます。
文字列の範囲 = リクエスト。 ヘッダー[「レンジ」];
bool isResume = 文字列。 IsNullOrEmpty(範囲);

2。 クライアントに正しく応答し、エンドポイントが継続可能であることをクライアントサーバーに通知します
ブレークポイントのリクエストを送信する際、クライアントに対応する番号は次のように設定できます:
応答。 ステータスコード=206;

3。 クライアントが必要とする適切なコンテンツを提供すること
クライアントが求める正しいコンテンツを提供するには、一般的に以下のステップが含まれます
クライアントのファイルリクエスト範囲を分析して取得します。
ブレークポイントを送信すると、必要な長さがファイルの長さより短いため、正しい応答を設定する必要があります。 ContentLength64プロパティ。
必要な内容を正しく転送してください
コード例:






先の:httplistenerはPOSTリクエストパラメータを取得するためにリスニングします
次に:18人の哲学コメディアン、全員が名人です
掲載地 2019/11/27 13:14:14 |
マーク
掲載地 2019/11/30 12:04:39 |
マーク      
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com