1

我有一个 WPF 应用程序,我想下载一个文件。

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

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

问题是,它没有下载文件,它只是显示为 0kb 文件而不下载,我不知道是什么问题,谁能帮忙?

4

4 回答 4

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");
    }
于 2010-03-23T01:09:39.410 回答
3

某些网站会阻止请求中没有特定标头的请求。特别是我过去发现的是“User-Agent”标头,尝试从浏览器请求中复制标头并将其添加到您的 WebClient

WebClient.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
于 2010-03-23T01:33:24.730 回答
0

找到了答案,我读到 DownloadFile 首先检查 DNS,如果我使用 IP 地址,它不会进行检查并立即工作。

感谢大家对此的帮助。

于 2010-03-23T01:49:51.763 回答
0

我想补充一点,当您对同一个文件有一个现有且未关闭的 web 请求时,该DownloadFileAsync方法(我不能说DownloadFile)不起作用。至少这是我的经验。可能是框架或服务器不允许。

于 2011-09-24T20:27:41.910 回答