gpt4 book ai didi

连接到端口 990 时 C# FTPS 卡住/超时

转载 作者:太空宇宙 更新时间:2023-11-03 21:05:11 26 4
gpt4 key购买 nike

我正在尝试将文件上传到 FTPS 文件共享。但我无法让代码工作。当下面的代码启动时,程序只是挂起,没有任何错误。最终会出现超时错误,提示系统错误。我已经尝试了很多东西,还有图书馆的等等。有没有人有使用 FTPS 上传的经验?此代码适用于我尝试过的普通 FTP。

var ftpServerIP = "Ftp.company1.company2.nl:990";
var ftpUserID = "Username";
var ftpPassword = "Password";

FileInfo fileInf = new FileInfo(@"D:\testfile.txt");
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;

// Create FtpWebRequest object from the Uri provided
reqFTP =
(FtpWebRequest)FtpWebRequest.Create(
new Uri("ftp://" + ftpServerIP + "/IDEE_MOX/" + fileInf.Name));
reqFTP.EnableSsl = true;

// Provide the WebPermission Credintials
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;

reqFTP.ContentLength = fileInf.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;

FileStream fs = fileInf.OpenRead();

try
{
Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);
while (contentLen != 0)
{
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
strm.Close();
fs.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Upload Error");
}

有谁知道这段代码有什么问题以及它为什么卡住?我有点被困在这里了。

最佳答案

.NET 框架 (FtpWebRequest) 不支持隐式 TLS/SSL。仅显式,参见:
Does .NET FtpWebRequest Support both Implicit (FTPS) and explicit (FTPES)?

因此,您无法连接到端口 990(隐式 TLS/SSL)。


虽然您的 FTP 服务器很可能也支持显式 TLS/SSL,但请使用它。您已经设置了 EnableSsl (什么是显式 TLS/SSL)。所以只需连接到默认端口 21 就可以了:

var ftpServerIP = "Ftp.company1.company2.nl"; 

(无需指定显式端口,因为默认为 21)


在极少数情况下,您的服务器不支持显式 TLS/SSL,您需要使用第 3 方 FTP 客户端库。上面链接的问题中提到了一些。 我的 WinSCP .NET assembly也支持隐式 FTPS。由于您已经使用 WinSCP GUI 建立连接,使用隐式 TLS/SSL,您可以拥有 code template generated .

关于连接到端口 990 时 C# FTPS 卡住/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41677547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com