2010-12-02 10 views
0

私はhttp://ww.url.com/page?id=200という形式のURLを持っています。これにより、10 MBのファイルがダウンロードされます。しかし、私は常にe.ProgressPercentageを0にしています。実際の結果を読み込んでupload done関数を実行しています。WebClientのDownloadAsyncDataが失敗します

ここで間違っていることを教えてください。

私はん。ContentLength応答のヘッダに戻さに

private void button1_Click(object 
    sender, EventArgs e) 
{ 

    WebClient webClient = new WebClientEx(); 

    webClient.DownloadProgressChanged += 
     new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged); 

    webClient.DownloadDataCompleted += new 
     DownloadDataCompletedEventHandler(wc_DownloadComplete); 

    webClient.DownloadDataAsync(new Uri("http://ww.url.com/page?id=200")); 


} 

public void wc_DownloadProgressChanged(Object sender, 
    DownloadProgressChangedEventArgs e) 

{ 
    Progress1.Value = e.ProgressPercentage; // this is 0 
} 

public void wc_DownloadComplete(Object sender,DownloadDataCompletedEventArgs e) 

{ 
    int a = 0; 
    this.Close(); 
} 
} } 
+0

多分それはあなたのフォーマット(によって引き起こされています - :) –

+0

と注意:あなたのCompletedEventはerrorhandling欠けています。 –

答えて

0

ProgressPercentageに基づいて、次のコードを使用しています。ヘッダーをまとめているときに、ダウンロードがどのくらい大きくなるかをレスポンスが知らない場合は、進捗状況を取得できません。

これが単にIISから返されたファイルの場合、IISはファイルシステムからファイルのサイズを取得し、ヘッダーを設定します。応答が動的でバッファ内に収まる場合は、応答の長さを設定できます。しかし、私は、デフォルトのバッファサイズが10MB未満であることをかなり確信していますので、応答の長さがわかる前に、応答ヘッダーがクライアントに返されます。 Asp.Netで

、あなたがこれを行うだろうことは(あなたはそれがあなたのプラットフォームに依存置く場所)...

Response.AddHeader("Content-Length", "10485760"); 
関連する問題