2010-03-23 31 views
1

我得到了一個WPF應用程序,我想下載一個文件。Webclient下載文件同步不起作用

我在使用System.Net;我有以下代碼:

WebClient ww = new WebClient(); 
ww.DownloadFileAsync(
    new Uri("http://www.sinvise.net/tester/1.jpg"), 
    AppDomain.CurrentDomain.BaseDirectory + "\\1.jpg"); 

的問題是,是,它不下載文件,它只是顯示爲0KB文件,而不是下載的,我不知道是什麼問題,可以有人幫忙嗎?

+0

我假設www是一個錯字。如果不是,立即出現問題。 – spender 2010-03-23 01:15:58

+0

對不起,這是一個排字錯誤 – 2010-03-23 01:30:09

+0

我試着在我的機器上運行下載,它下載得很好(沒有任何額外的頭文件或任何特別的東西)。檢查你是否沒有防火牆或阻止傳輸的東西。尼斯圖片btw :-) – 2010-03-23 01:50:29

回答

0

找到了答案,我讀到DownloadFile檢查DNS之前,任何事情,如果我使用一個IP地址它不做檢查,並立即工作。

感謝大家對此的幫助。

7

如何收聽DownloadFileCompleted事件並檢查事件轉發給您的處理程序的AsyncCompletedEventArgs.Error屬性?

public static void DownLoadFileInBackground(string address) 
    { 
     WebClient client = new WebClient(); 
     Uri uri = new Uri(address); 
     client.DownloadFileCompleted += (sender,e)=> 
             { 
              //inspect e here: 
              //e.Error 
             }; 
     client.DownloadProgressChanged += (sender,e)=> 
              { 
               //e.ProgressPercentage 
              }; 
     client.DownloadFileAsync(uri, "blabla"); 
    } 
+0

我給它一個嘗試,並使用e.error檢查任何輸出,並將進度百分比輸出到進度條,然後用消息框再次嘗試,但沒有輸出,都沒有啓動事件。 – 2010-03-23 01:20:56

+0

我發現添加兩個事件清除了間歇性問題 - 這很奇怪,因爲這是我需要添加事件以確保可靠寫入文件的唯一時間之一。 – 2015-03-20 14:34:52

2

某些網站阻止請求中沒有某些標頭的請求。 尤其是一個我在過去已經發現的是「用戶代理」標頭,試着從瀏覽器請求複製標題,並將其添加到您的Web客戶端

WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)"); 
+0

希望工作,但不努力,但它不下載文件。 – 2010-03-23 01:37:10

0

我想補充一點,當您對同一個文件有一個現有的和未關閉的webrequest時,DownloadFileAsync方法(我不能說DownloadFile)不起作用。至少那是我的經驗。它可能是框架或服務器所不允許的。