0

主题:基于 SSL 的 FTP 文件传输

我正在尝试将文件上传到我拥有的一台 ftp 服务器,但是在到达侦听端口 990 的服务器服务器时出现异常我认为问题出在隐式/显式设置上,谁能建议我如何使用隐式设置通过 SSL 进行 ftp在.net 4.0 中?

我在调用 GetRequestStream 方法时遇到的异常:底层连接已关闭:服务器违反了协议。

这是代码片段:

FileInfo ExportFile = new FileInfo("C:\\ServiceXML.xml");
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create("ftpserver" + "/FolderName/" + ExportFile.Name);
request.EnableSsl = true;
request.Credentials = new NetworkCredential("username", "password");
request.KeepAlive = true;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UseBinary = true;
request.ContentLength = ExportFile.Length;
request.UsePassive = true;
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };

        try
        {
            int bufferLen = 4096;
            byte[] buffer = new byte[4096];
            int contentLen;

            FileStream fsExport = ExportFile.OpenRead();
            Stream ftpStream = request.GetRequestStream();

            contentLen = fsExport.Read(buffer, 0, bufferLen);

            while (contentLen != 0)
            {
                ftpStream.Write(buffer, 0, contentLen);
                contentLen = fsExport.Read(buffer, 0, bufferLen);
            }

            fsExport.Close();
            fsExport.Dispose();
            ftpStream.Close();
            ftpStream.Dispose();
        }
        catch (Exception ex)
        {
            //LogError(ex, "Error in FTP Request.");
        }

现在在这个问题上苦苦挣扎了几天..任何帮助将不胜感激..任何人都可以建议我使用 .net 4.0 中的隐式设置通过 SSL 进行 FTP 的好例子吗?

4

2 回答 2

0

有类似的问题,除了我在 .net 4 上收到“处理中的本地错误”。将框架更改为 .net 3.5 并且它有效。

于 2016-02-16T22:52:58.520 回答
-1

当我没有在 URI 中设置端口时,我遇到了同样的问题,您的 ftpserver 变量应该类似于ftp://127.0.0.1:990

于 2016-07-05T15:15:58.863 回答