.Net:FtpWebRequest“(503)错误的命令序列”错误

问题描述 投票:5回答:5

在大文件(~200 + MB)上,读取流时出现503错误。

ftp = (FtpWebRequest)WebRequest.Create(new Uri(address.AbsoluteUri + @"/" + file.Name));
ftp.Credentials = new NetworkCredential(username, password);
ftp.Method = WebRequestMethods.Ftp.DownloadFile;

response = (FtpWebResponse)ftp.GetResponse();

关于我做错了什么或更好的大文件练习的线索?

c# .net ftp
5个回答
4
投票

您是在每次尝试后还是仅在后续尝试后收到503?

您是否尝试过设置禁用KeepAlive?

ftp.KeepAlive = false;

我会尝试一个更强大的ftp客户端库,一个基本的免费可以在qazxsw poi。


4
投票

我同意最小化NetworkCredential对象的数量可以解决问题。我遇到了这个问题并创建了一个CredentialCache并添加了一次凭证。没有更多的ftp错误。


3
投票

出于某种原因,有几个人似乎注意到只使用一个NetworkCredential对象的实例而不是为每个FtpWebRequest使用一个新实例。这至少对我有用。


0
投票

该错误是由于没有时间让服务器注销。使用try语句,当发生此错误时,创建一个短时间延迟并重新开始。这将允许服务器从最后的rrequest注销。


0
投票

就我而言,服务器(属于客户端)已更改为仅接受TLS(SSL)请求。他们当然没有告诉我们这一点,503错误消息没有帮助!

所以我们需要像这样使用sourceforge

.EnableSsl

为了忽略证书错误,我还需要添加:

        var ftp = WebRequest.Create(uri) as FtpWebRequest;
        if (ftp != null) {
            ftp.EnableSsl = true; // <- the new bit
            ftp.Credentials = myCredentials;
            ftp.KeepAlive = false; // <- you may or may not want this
        }
        return ftp;

我的理解是这一行具有全局效果,所以只需要在应用程序启动时调用它。

:o)

© www.soinside.com 2019 - 2024. All rights reserved.