2009-08-26 8 views
9

서버가 이력서 다운로드 기능을 지원하는지 여부를 알고 싶으면 지원 요청시 어떻게 재개 요청을 보내나요?HttpWebRequest 또는 WebRequest - ASP.NET 다운로드 다시 시작

나는 "rapidleech는"오늘,하지만 난 요청하고있어 서버인지 확인하고 싶습니다 않습니다 같은 내 ASP.NET 페이지 내에 서버에서 다운로드를 할 수있는 솔루션, 뭔가를 찾고 있었다 다운로드는 기능 재개를 지원합니다.

답변

24

파일을 다시 시작하려면 Range HTTP 헤더를 사용하여 다운로드 할 파일의 바이트 범위를 지정해야합니다. 이 기능은 .NET에서 HttpWebRequest.AddRange 기능을 사용하여 수행 할 수 있습니다. 예를 들어

:

request.AddRange(1000); 

파일의 1000 바이트에 보내기 시작하도록 서버를 알려줍니다.

서버가 Range 헤더를 지원하면 일반 200 (OK) 대신 HTTP 상태 206 (부분 콘텐츠)으로 콘텐츠를 보냅니다. HTTP Spec을 참조하십시오.

다운로드를 시도하기 전에 서버가 다시 시작을 지원하는지 확인하려면 HttpWebRequestMethod "HEAD"를 변경하십시오. 서버는 다시 시작을 지원할 경우 206 (부분 컨텐트)를 반환하고 그렇지 않으면 200 (확인)을 반환합니다.

+0

에 의해 범위 특정 요청에 대한 자세한 정보를 찾을 수 있습니까? – Cleiton

+0

예. HTTP 스펙에 따르면 서버는 범위를 지원하지 않는 경우 모든 컨텐츠를 포함하는 일반 200을 전송합니다. 초기 다운로드에서 "Accept-Ranges"헤더에 지정된 서버가 범위 전송 ("bytes"또는 "none"이어야 함)을 지원하는지 확인하려고 할 수도 있습니다. 이 머리글은 필수가 아니므로 "Accept-Ranges"헤더가 없으면 범위를 받아 들일 수 있습니다. –

+0

@Adam, 많은 감사합니다! – Cleiton

2

당신은 너무, 서버 나던 suport 경우, 그것은 일반 (200)를 보내드립니다 Scott Mitchell here

+0

@Neil,이 위대한 링크에 감사드립니다. – Cleiton

관련 문제