Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 19401|Respuesta: 2

[ASP.NET] ASP.NET usar HttpListener para reanudar puntos de interrupción de archivos

[Copiar enlace]
Publicado en 27/11/2019 10:42:41 | | |
El principio de continuación por punto de interrupción es muy sencillo, es decir, la cabecera del mensaje HTTP de solicitud y respuesta es diferente de la descarga normal.
Al solicitar un documento en un servidor de la manera habitual, la solicitud realizada y el servidor recibido son los siguientes:
Cabecera de la solicitud:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Cabecera de respuesta:
200
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Cuando el servidor soporta la reanudación de puntos de interrupción, la solicitud y respuesta son las siguientes:
Cabecera de la solicitud:
Cache-Control: no-cache
Connection: close
Pragma: no-cache
Accept: */*
Host: localhost
Range: bytes=15360-
Cabecera de respuesta:
206
Content-Type: application/octet-stream
Content-Disposition: attachment;FileName=time.pdf

Las diferentes partes de los dos mensajes están marcadas con secciones rojas. Se puede ver:
El encabezado de rango se utiliza para identificar la ubicación de descarga deseada por el cliente.
Cuando el número de respuesta del servidor es 200, significa que la descarga comienza desde la cabecera del archivo, y 206 significa que la transferencia comienza desde una ubicación específica del archivo.
En otras palabras, al soportar la reanudación por punto de interrupción, puedes empezar a descargar desde cualquier parte del archivo, mientras que la forma normal solo puede descargar desde la cabecera del archivo.
Para que el punto de interrupción de soporte del servidor se reanude, deben resolverse los siguientes problemas:

1。 Si es una solicitud de reanudación, necesitas obtener el rango de archivos que requiere el cliente.
Como puedes ver en el análisis anterior, cuando el cliente transmite un punto de interrupción, el campo Rango se añade a la cabecera del paquete, y puedes determinar si es una solicitud de transmisión de punto de interrupción de la siguiente manera.
Rango de cadenas = solicitud. Cabeceras["Rango"];
bool isResume = cadena. IsNullOrEmpty (rango);

2。 Responder correctamente al cliente para notificar al servidor cliente que el endpoint es compatible con la continuación
Al enviar una solicitud de punto de interrupción, el número correspondiente para el cliente puede establecerse de la siguiente manera:
respuesta. Código de Estado = 206;

3。 Entrega el contenido adecuado que el cliente necesita
Entregar el contenido correcto que requiere el cliente generalmente implica los siguientes pasos
Obtén el rango de solicitud de archivo del cliente analizando el rango.
Cuando se envía un punto de interrupción, la longitud requerida es menor que la longitud del archivo, por lo que es necesario establecer la respuesta correcta. ContentLength64 propiedad.
Transfiere correctamente el contenido requerido
Ejemplo de código:






Anterior:httplistener escucha para obtener los parámetros de la solicitud POST
Próximo:18 cómics filosóficos, todos ellos maestros
Publicado en 27/11/2019 13:14:14 |
Mark
Publicado en 30/11/2019 12:04:39 |
marcado      
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com