Skip to main content
 首页 » 编程设计

c#之WebClient.DownloadFileAsync 异常

2024年01月12日28bjzhanghao

我正在尝试通过以下方式在我的服务器上下载一个 zip 文件

WebClient.DownloadFileAsync(new Uri(DownloadLink), 
                            Path.GetFileName(DownloadLink)); 

我有链接到下载完成和进度更改的事件,当下载达到 99% 时,它停止了。所以我给它一分钟,然后它给了我一个异常(exception):

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 --- 

我被难住了。我可以在浏览器上正常下载文件。

请您参考如下方法:

对于您的问题,我没有直接的答案,但我会尝试做一些事情,看看是否可以找出问题所在。

首先,去掉异步调用,只调用DownloadFile。错误是否仍然出现?

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

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

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