通过SSL c#上传FTP文件

时间:2013-02-04 02:08:15

标签: c# c#-4.0 ftp sftp ftpwebrequest

主题:通过SSL传输FTP文件

我试图将文件上传到我拥有的其中一个ftp服务器 但我到达服务器时遇到异常 服务器侦听端口990 我认为问题在于隐式/显式设置 任何人都可以建议我如何使用.net 4.0中的隐式设置通过SSL进行ftp?

调用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中的隐含设置建议我使用FTP over SSL的好例子吗?

2 个答案:

答案 0 :(得分:0)

有类似的问题,除了我得到"处理中的本地错误" on .net 4.将框架更改为.net 3.5并且工作正常。

答案 1 :(得分:-1)

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