Webclient downloadfileasync无法正常工作

时间:2010-03-23 01:01:19

标签: c# webclient downloadfileasync

我有一个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 个答案:

答案 0 :(得分: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");
    }

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

找到答案,我读到DownloadFile会先检查DNS,如果我使用的是IP地址,它不会进行检查并立即生效。

感谢大家对此的帮助。

答案 3 :(得分:0)

我想补充一点,当您对同一文件有现有和未关闭的webrequest时,DownloadFileAsync方法(我不能代表DownloadFile)不起作用。至少这是我的经历。它可能是框架或服务器不允许的。