2010-03-19 3 views
1

매우 느린 것으로 보이는 모바일 연결을 통해 setup.exe 파일을 다운로드하려는 고객이 있습니다.잘못된 연결을 통해 cab 파일없이 Setup.exe 파일 다운로드

그들은 다운로드 한 setup.exe를 클릭하면 설치 마법사가 시작되지만 마법사를 통해 부분적으로 cab 파일이 손상되었거나없는 것을 나타내는 오류 메시지가 표시된다고보고했습니다.

그들은 문제가있는 타블렛을 우리에게 보냈지 만 문제없이 파일을 다운로드했지만 파일을 다운로드하기 위해 https를 사용하여 문제를 복제 할 수있었습니다 (https는 일반적으로 사이트의 나머지 부분에 액세스하는 데 사용됩니다. 다운로드에 필요하지 않음). 이 작업을 수행 할 때 다운로드 한 파일은 2.8MB였습니다. 8MB 여야합니다.

http를 사용하는 브라우저 기록에 다운로드 링크가 표시되어 고객이 http를 사용하여 다운로드하려고했기 때문에 https가 문제의 근본 원인이라고 생각하지 않습니다. 문제는 빈약 한 연결로 인해 전체 다운로드가 차단되지만 브라우저가 완료된 것처럼 작동한다는 것입니다.

파일을 완전히 다운로드했는지, 아니면 전혀 다운로드하지 않았는지 확인하는 방법이 있습니까? 브라우저가 다운로드가 완료되지 않았다는 것을 표시하지 않는 이유는 무엇입니까?

답변

2

대부분의 경우 EXE 파일이있는 웹 서버는 Content-Length header을 보내지 않습니다. 이 헤더가 없으면 다운로드가 완료되면 브라우저에서 확인할 수있는 유일한 방법은 "바이트가 멈추는 경우"입니다. 즉 TCP/IP 연결이 닫히거나 시간이 초과됩니다. 연결 품질이 낮 으면 조기에 발생할 수 있습니다.

다른 옵션은 헤더를 보내지 만 브라우저가 헤더를 무시한다는 것입니다. 요즘은 이러한 뇌 손상 수준이 매우 드뭅니다. 그러나 브라우저가 비표준/내장/고대 인 경우 가능합니다.

따라서이 문제에 대한 해결책은 HTTP 서버를 수정하는 것입니다. 그리고 설치 패키지를 만드는 데 사용하는 소프트웨어에 대한 옵션을 살펴보십시오. 아마도 최종 EXE의 해시를 만들거나 (또는 ​​적어도 원하는 길이를 기억하는) 설정이 있고 더 합리적인 오류가 발생한다고 불평 할 수 있습니다 아카이브가 손상되었다는 메시지

+0

Content_Length 헤더가 없다는 것에 대해 절대적으로 맞습니다. 사실 FileStream을 열려면 코드 (C#)를 가지고 응답으로 보냈습니다. 이제 Content-Length를 Response 헤더에 추가했습니다. 이제 파일 크기와 진행률 막대가있는 좋은 대화 상자가 나타납니다. 디버거에서 중단 점을 설정하여 불완전한 다운로드를 시뮬레이트하고 조기에 종료하려고했습니다. 그러나 브라우저 (IE7)는 여전히 다운로드가 완료되었다고보고했습니다. 8MB 대신 17kb가 제공 되었음에도 불구하고. 나는 아직도 Response.End .......를 보낼지도 모르기 때문에 아마도 나의 테스트가 정확하지 않다고 생각한다. – Colin