Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 19401|Risposta: 2

[ASP.NET] ASP.NET usare HttpListener per riprendere i punti di interruzione dei file

[Copiato link]
Pubblicato su 27/11/2019 10:42:41 | | |
Il principio della continuazione del punto di interruzione è molto semplice, cioè l'intestazione del messaggio HTTP request e reply è diversa dal normale download.
Quando si richiede un documento su un server nel modo normale, la richiesta fatta e il server ricevuto sono i seguenti:
Intestazione della richiesta:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Intestazione della risposta:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Quando il server supporta il ripristino dei punti di interruzione, la richiesta e la risposta sono le seguenti:
Intestazione della richiesta:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
Intestazione della risposta:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Le diverse parti dei due messaggi sono contrassegnate con sezioni rosse. Si può vedere:
L'intestazione Range viene utilizzata per identificare la posizione di download desiderata dal cliente.
Quando il numero di risposta del server è 200, significa che il download inizia dall'intestazione del file, mentre 206 significa che il trasferimento parte da una posizione specifica del file.
In altre parole, quando si supporta la ripresa dei punti di interruzione, puoi iniziare a scaricare da qualsiasi parte del file, mentre il modo normale può scaricare solo dall'intestazione del file.
Per far riprendere il supporto server al punto di interruzione, devono essere risolti i seguenti problemi:

1。 Se si tratta di una richiesta di ripresa, devi ottenere l'intervallo di file richiesto dal cliente.
Come si può vedere dall'analisi sopra, quando il client trasmette un punto di interruzione, il campo Range viene aggiunto all'intestazione del pacchetto e si può determinare se si tratta di una richiesta di trasmissione di punto di interruzione come segue.
intervallo di stringhe = richiesta. Header["Range"];
bool isResume = stringa. IsNullOrEmpty (raggio);

2。 Rispondi correttamente al client per notificare al client server che l'endpoint è supportato per la continuazione
Quando si invia una richiesta di breakpoint, il numero corrispondente per il client può essere impostato come segue:
risposta. Codice di Stato = 206;

3。 Consegna i contenuti giusti di cui il cliente ha bisogno
La consegna dei contenuti corretti richiesti dal cliente generalmente comporta i seguenti passaggi
Ottieni l'intervallo delle richieste file del cliente analizzandolo.
Quando viene inviato un punto di interruzione, la lunghezza richiesta è più corta della lunghezza del file, quindi è necessario impostare la risposta corretta. ProprietàContenutoLunga64.
Trasferire correttamente i contenuti richiesti
Esempio di codice:






Precedente:httplistener ascolta per ottenere i parametri della richiesta POST
Prossimo:18 fumetti filosofici, tutti maestri
Pubblicato su 27/11/2019 13:14:14 |
Segno
Pubblicato su 30/11/2019 12:04:39 |
Segnato      
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com