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

时间:2009-05-17 19:52:12

标签: c# windows-server-2008 windows-server-2003 webclient

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

这是'生成错误

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

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

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

3 个答案:

答案 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)和不同的解决方案

生产服务器环境非常安全,服务器无法访问该网址。

快速测试是在框中使用浏览器,看看是否可以导航到网址。

希望这有助于某人。