2014-10-05 5 views
1

나는 지정된 URL에서 파일을 다운로드하는 간단한 코드를 가지고 있으며 Windows 7에서 훌륭하게 작동하지만 Windows 8.1에서 다운로드 한 파일을 실행할 때 손상되었습니다. 문제가 어디에 있습니까?WebClient가 Windows 8.1에서 손상된 파일을 다운로드합니다.

WebClient wClient = new WebClient(); 
wClient.DownloadFile(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0", "dl.xlsx"); 
+0

Windows 8의 LINQPad에서이 코드를 시도했지만 예상대로 작동하여 Google 문서 도구에서 열 수있는 파일의 사본을 다운로드했습니다. 파일 손상은 다른 것으로 인해 발생할 수 있습니다. – Mun

+0

파일에 무엇이 있습니까? –

+0

이 파일은 테이블과 일부 레코드가있는 Excel 파일입니다. URL을 브라우저 또는 다운로드 관리자에게 보내면 문제없이 다운로드 할 수 있으며 코드는 Windows 7에서도 잘 실행되지만 Windows 8.1에서 손상된 파일을 다운로드합니다. 왜 다른 Windows에서 코드가 같은 일을하지 않는지 궁금합니다. Windows 8.1이 설치된 2 대의 다른 PC에서 코드를 시도했습니다. – Qubit

답변

1

이 URL은 당신이 기대하는 것을 제공하지 않습니다

이 코드와 URL입니다. Fiddler를 사용하여 HTTP 수준에서 어떤 일이 발생하는지 찾습니다. 올바른 내용으로 응답하려면 서버가 입력으로 필요로하는 것을 찾아야합니다.

public class WebDownload : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 
     if (request != null) 
     { 
      request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
     } 
     return request; 
    } 
} 

하지만 여전히 난 내 초기 코드가 문제없이 실행되는 이유를 잘 모릅니다 :

1

감사 USR 도움을 에, 나는 문제가, 서버가 Gzip으로 형식으로 파일 그래서 내가 코드를 적응 반환 발견 내 PC에!

+0

이것은 나머지 API를 통해 tfs (팀 기반 서버)에서 첨부 파일을 다운로드하는 경우에도 작동합니다. (Windows 10) 고마워! – RoJaIt

관련 문제