当我在我的win2k8机器上尝试我的程序时,它运行正常,但在win 2k3上它给了我这个错误错误信息
这是'生成错误
的代码WebClient wc = new WebClient();
wc.DownloadFile("ftp://ftp.website.com/sample.zip");
有奇怪的部分。如果我完全禁用服务器上的防火墙。错误消失了。但如果我将程序添加到例外列表并打开防火墙,它仍然会出错。
在网上搜索了几天,找不到任何解决方案。
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
请发布完整的异常,包括任何InnerException:
try
{
WebClient wc = new WebClient();
wc.DownloadFile("ftp://ftp.website.com/sample.zip");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString()); // Or Debug.Trace, or whatever
throw; // As if the catch were not present
}
答案 2 :(得分:1)
我有类似的问题(没有ftp)和不同的解决方案
生产服务器环境非常安全,服务器无法访问该网址。
快速测试是在框中使用浏览器,看看是否可以导航到网址。
希望这有助于某人。