微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:使用C#FTPwebRequest

如何解决错误:使用C#FTPwebRequest

我们想将文件上传到Ubuntu FTP服务器。我们可以使用FILE Zilla连接文件并将其上传到服务器。 FTp服务器已启用SSL,并具有TLS1.2。在接受证书后显示上载或连接证书时,只有我们可以连接或上载文件

需要有一个自动系统,该系统可以在创建文件时将文件上传到FTP。为此,我们正在开发一个.net C#应用程序,它将上传文件。我们能够连接到FTP,并使用C#FtpWebRequest显示其中的文件。但是,在将文件上传到ubuntu FTP(vsFTP)(使用C#FTPWebRequest)时,文件会部分上传,然后连接终止。 “ GetResponse-远程服务器返回错误:(426)连接已关闭;传输已中止。”

已经检查了防火墙以确认是否是导致此问题的原因,因此在防火墙外运行了该应用程序,但仍然遇到相同的异常。添加了TLS1.2的代码以及ServicePointManager.ServerCertificateValidationCallback,但仍然无法通过成功响应上传文件

发现了一个类似的问题[与426-终止连接有关] [1]实施了添加配置设置的建议,但即使这样也对我有用。

任何能够将文件上传到Linux FTP且支持TLS的机构,请您分享逻辑或让我知道在我的情况下究竟需要做些什么。 需要启用或禁用的任何FTP配置设置都会帮助我解决此问题

仅需确认何时禁用SSL并将其保留为纯FTp,我们就可以上传文件而没有任何问题。

下面是用于上传文件代码

 FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://siteURl//home/Files/" + "Myfile.xml");
            request.Credentials = new NetworkCredential("UserName","Password");
            request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            //request.KeepAlive = false;
            request.Timeout = 10000;
            request.UseBinary = true;
            request.UsePassive = true;
            request.KeepAlive = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            request.EnableSsl = true;
            
            ServicePointManager.ServerCertificateValidationCallback = delegate (object s,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors) { return true; };
            
            StreamReader sourceStream = new StreamReader(filePath);
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents,fileContents.Length);
            requestStream.Close();
          FtpWebResponse response = (FtpWebResponse)request.GetResponse();

FtpWebResponse response =(FtpWebResponse)request.GetResponse(); 行是连接中止的地方,我们得到了错误,get响应给出了426错误 [1]:powershell ftps upload causing error "DATA connection terminated without ssl shutdown" on stream close

下面是ftp失败时得到的日志。

   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5147134Z
System.Net information: 0 : [7256] FtpControlStream#62468121 - Received response [426 Failure reading network stream.]
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5157116Z
System.Net.sockets Verbose: 0 : [7256] Entering Socket#49652976::dispose()
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5177039Z
System.Net information: 0 : [7256] FtpWebRequest#66824994::(Releasing FTP connection#62468121.)
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5177039Z
System.Net Verbose: 0 : [7256] Entering FtpWebRequest#66824994::GetResponse()
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5187110Z
System.Net information: 0 : [7256] FtpWebRequest#66824994::GetResponse(Method=STOR.)
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5187110Z
System.Net Error: 0 : [7256] Exception in FtpWebRequest#66824994::GetResponse - The Remote Server returned an error: (426) Connection closed; transfer aborted..
  at System.Net.FtpWebRequest.GetResponse()
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5286972Z
System.Net Verbose: 0 : [7256] Exiting FtpWebRequest#66824994::GetResponse() 
   ProcessId=4236
   DateTime=2020-10-09T10:46:50.5286972Z
System.Net information: 0 : [5524] ServicePoint#60068066 - Closed as idle.
   ProcessId=4236
   DateTime=2020-10-09T10:48:17.3365536Z
System.Net information: 0 : [5524] ServicePoint#57712780 - Closed as idle.```


  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。