[英]Error trying to use C# ftpwebrequest to ftp xml file to Zebra printer
[英]Error : File partially Uploading to linux FTP using 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] 实现了添加配置设置的建议,但即使是这个 dint 也对我有用。
任何能够将文件上传到支持 TLS 的 linux FTP 的机构,请您分享逻辑或让我知道在我的情况下到底需要做什么。 任何需要启用或禁用的 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, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
行FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 是连接中止的地方,我们得到错误 get 响应给出了 426 错误 [1]: powershell ftps 上传导致错误“数据连接终止而没有 ssl 关闭”在流关闭时
下面是我们在 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.```
同样的问题,但对于 power shell 脚本,这里是:
powershell ftps上传导致流关闭时出现错误“数据连接终止而ssl关闭”
...并且提供了一种解决方法,至少对于 vsftpd 服务器,添加到服务器选项中:
strict_ssl_read_eof=否
它会不断抱怨(在内部,在日志中,在服务器中),但您不会有任何例外。 但是,存在相关的安全风险(检查链接)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.