4

当我在我的 win2k8 机器上尝试我的程序时,它运行良好,但在 win 2k3 上,它给了我这个错误消息

这是产生错误的代码

WebClient wc = new WebClient(); 
wc.DownloadFile("ftp://ftp.website.com/sample.zip");

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

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

4

3 回答 3

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);
    }
}
于 2009-05-17T21:00:12.397 回答
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
}
于 2009-05-17T21:17:10.470 回答
1

我有一个类似的问题(没有 ftp)和不同的解决方案

生产服务器环境已变得非常安全,以至于服务器无法访问 URL。

快速测试是在盒子上使用浏览器,看看是否可以导航到 url。

希望这可以帮助某人。

于 2009-10-06T15:00:03.460 回答