错误信息是:
服务器返回一个地址以响应PASV命令,该命令与FTP连接的地址不同。
当我尝试调用下面的GetResponse()方法时,我收到此消息... 请帮忙。
这是我的C#代码:
FileStream outputStream = new FileStream(feedXmlPath +“\”+ “testXml”,FileMode.Create);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpURL + "/" + zipFileName);
request.UseBinary = true;
request.Credentials = new NetworkCredential(userName, password);
request.KeepAlive = false;
request.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
答案 0 :(得分:1)
答案 1 :(得分:0)
尝试切换Passive值以查看哪些有效:
request.UsePassive = false;
这可能取决于计算机(客户端和服务器)之间的防火墙。
我注意到如果我通过防火墙,我需要将它保留为True,否则它将返回异常:
远程服务器返回错误:(500)语法错误,命令 无法识别的。
但是,如果我在防火墙后面(就像在数据中心内直接相互连接的两台机器)那么我需要将其设置为False,否则它将返回异常:
服务器返回一个地址以响应PASV命令,该命令与FTP连接所在的地址不同 制成。