当我在我的 win2k8 机器上尝试我的程序时它运行良好但是在 win 2k3 上它给我这个错误消息
这是产生错误的代码
WebClient wc = new WebClient();
wc.DownloadFile("ftp://ftp.website.com/sample.zip");
这是奇怪的部分。如果我完全禁用服务器上的防火墙。错误消失了。但如果我将程序添加到异常(exception)列表并打开防火墙,它仍然会出错。
在网上搜索了几天,找不到任何解决方案。
最佳答案
您应该尝试对 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);
}
}
关于c# - 底层连接已关闭 : An unexpected error occurred on a receive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875348/