底层连接已关闭:接收时发生意外错误

4 c# webclient windows-server-2003 windows-server-2008

当我在我的win2k8机器上尝试我的程序它运行正常,但在赢得2k3它给我这个错误错误消息

这是'生成错误的代码

WebClient wc = new WebClient(); 
wc.DownloadFile("ftp://ftp.website.com/sample.zip");
Run Code Online (Sandbox Code Playgroud)

这是奇怪的部分.如果我完全禁用服务器上的防火墙.错误消失了.但如果我将程序添加到例外列表并打开防火墙,它仍然会出错.

在网上搜索了几天,找不到任何解决方案.

Tho*_*que 6

您应该尝试使用被动模式进行FTP.WebClient类不允许这样做,但FtpWebRequest确实如此.

FtpWebRequest request = WebRequest.Create("ftp://ftp.website.com/sample.zip") as FtpWebRequest;
request.UsePassive = true;
FtpWebResponse response = request.GetResponse() as FtpWebResponse;
Stream ftpStream = response.GetResponse();
int bufferSize = 8192;
byte[] buffer = new byte[bufferSize];
using (FileStream fileStream = new FileStream("localfile.zip", FileMode.Create, FileAccess.Write))
{
    int nBytes;
    while((nBytes = ftpStream.Read(buffer, 0, bufferSize) > 0)
    {
        fileStream.Write(buffer, 0, nBytes);
    }
}
Run Code Online (Sandbox Code Playgroud)