Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Webclient下载文件异步不工作_C#_Webclient_Downloadfileasync - Fatal编程技术网

C# Webclient下载文件异步不工作

C# Webclient下载文件异步不工作,c#,webclient,downloadfileasync,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文件,没有下载,我不知道问题出在哪里,有人

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

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

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

问题是,它没有下载文件,只是显示为0kb文件,没有下载,我不知道问题出在哪里,有人能帮忙吗?

如何监听事件并检查事件转发给处理程序的属性

    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");
    }

监听事件并检查事件转发给处理程序的属性如何

    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");
    }

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

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

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

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

找到答案后,我读到DownloadFile在做任何事情之前首先检查DNS,如果我使用IP地址,它不会进行检查,并立即工作


谢谢大家在这方面的帮助。

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


不过,感谢大家在这方面的帮助。

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

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

我认为www是一个输入错误。如果没有,马上就有问题了。我试着在我的机器上运行下载,它下载得很好(没有任何额外的头或任何特殊的东西)。检查您是否没有防火墙或类似的东西阻止传输。很好的图片顺便说一下:-)编辑:这是我的av,很傻,它甚至没有提示我!我认为www是一个拼写错误。如果没有,马上就有问题了。我试着在我的机器上运行下载,它下载得很好(没有任何额外的头或任何特殊的东西)。检查您是否没有防火墙或类似的东西阻止传输。很好的图片顺便说一下:-)编辑:这是我的av,很傻,它甚至没有提示我!我尝试了一下,使用e.error检查任何输出,并将progresspercentage输出到进度条,然后使用messagebox再次尝试,但没有输出,两个事件均未启动。我发现添加这两个事件可以清除间歇性问题-这很奇怪,因为这是我唯一需要添加事件以确保可靠写入文件的时间之一。我尝试了一下,并使用e.error检查任何输出,将progresspercentage输出到进度条,然后使用messagebox重试,但没有输出,两个事件都没有启动。我发现添加两个事件可以解决间歇性问题-这很奇怪,因为这是我唯一需要添加事件以确保可靠写入文件的时间之一。希望这样做有效,但没有,仍然没有下载文件。希望这样做有效,但没有,但它仍然没有下载文件。