2009-08-26 19 views
9

Me gustaría saber si hay una manera de saber si un servidor admite la función de descarga de reanudar y si es compatible, ¿cómo puedo enviar una solicitud para reanudar?HttpWebRequest o WebRequest - Reanudar Descargar ASP.NET

que estaba buscando una solución donde mi página ASP.NET puede realizar una descarga desde un servidor a la mía, algo así como "rapidleech" hace hoy en día, pero me gustaría comprobar si el servidor donde estoy solicitando la descarga admite la función de reanudar todo.

Respuesta

24

La reanudación de archivos se realiza especificando el rango de bytes del archivo que desea descargar utilizando el encabezado HTTP Range. Esto se puede hacer en .NET con la función HttpWebRequest.AddRange.

Por ejemplo:

request.AddRange(1000); 

le dirá al servidor para empezar a enviar en el byte número 1000 del archivo.

Si el servidor soporta la cabecera de la gama, se enviará el contenido con un estado HTTP 206 (Contenido parcial) en lugar de la normal de 200 (OK). Vea el HTTP Spec.

para comprobar si el servidor soporta la reanudación antes de intentar la descarga, cambiar Method 'HEAD' la HttpWebRequest 's. El servidor devolverá 206 (Contenido parcial) si es compatible con la reanudación y 200 (Aceptar) si no lo hace.

+0

así, si suport duerma servidor, tendrá que enviar una normal de 200? – Cleiton

+0

Sí. De acuerdo con las especificaciones HTTP, el servidor enviará 200 normales con todo el contenido si no admite rangos. También puede comprobar lo que el servidor especificado en la cabecera "Accept-Ranges" en su intento de descarga inicial para ver si es compatible con las gamas de envío (debe ser "bytes" o "ninguna"). No se requiere esta cabecera, por lo que si no hay "Accept-Ranges" de cabecera puede aceptar rangos. –

+0

@Adam, muchas gracias! – Cleiton

Cuestiones relacionadas