WebClient.DownloadFileAsync异常

时间:2010-09-18 20:15:03

标签: c# winforms exception webclient

我正在尝试通过

在我的服务器上下载一个zip文件
WebClient.DownloadFileAsync(new Uri(DownloadLink),
                            Path.GetFileName(DownloadLink));

我已将事件链接到下载已完成且进度已更改,当下载达到99%时,它会停止。所以我给它一分钟,然后它给了我一个例外:

System.Net.WebException: An exception occurred during a WebClient request. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.ConnectStream.EndRead(IAsyncResult asyncResult)
   at System.Net.WebClient.DownloadBitsReadCallbackState(DownloadBitsState state, IAsyncResult result)
   --- End of inner exception stack trace ---

我很难过。我可以在浏览器上下载文件。

2 个答案:

答案 0 :(得分:0)

我没有直接回答你的问题,但我会尝试一些事情,看看能不能确定问题。

首先,摆脱异步调用,然后调用DownloadFile。错误是否仍然发生?

调用DownloadData获取字节数组中的数据,然后保存文件。

如果上述任何一个或两个都有效,那么我会说你的DownloadDataCompleted事件处理程序出了问题,尽管为什么抛出WebException超出了我的范围。

哦,还有一件事:你确定Path.GetFileName(DownloadLink)正在返回一个有效的文件名,并且你具有在当前目录中写入文件的必要权限吗?

答案 1 :(得分:0)

如果DownloadLink返回类似404的错误,您将收到WebException。放入一个断点并检查进入该方法的实际路径。

编辑:如果DownloadLink是一个url字符串,请检查您是否正在转义'/'。试试@“......”