我正在尝试将文件上传到 FTP 服务器 (FTPS)。运行以下代码会产生异常:
根据验证程序,远程证书无效。
编码:
static void Main(string[] args)
{
FTPFactory ftp = new FTPFactory();
ftp.setDebug(true);
ftp.setRemoteHost("ftps.host");
//Connect to SSL Port (5920)
ftp.setRemotePort(5920);
ftp.loginWithoutUser();
string cmd = "AUTH SSL";
ftp.sendCommand(cmd);
//Create SSL Stream
ftp.getSslStream();
ftp.setUseStream(true);
//Login FTP Secure
// ftp.setRemoteUser(Settings.Default.TargetFtpSecureUser);
ftp.setRemoteUser("user");
// ftp.setRemotePass(Settings.Default.TargetFtpSecurePass);
ftp.setRemotePass("pass");
ftp.login();
//Set ASCII Mode
ftp.setBinaryMode(false);
//Upload file
// Send Argument if you want
// cmd = "site arg1 arg2";
// ftp.sendCommand(cmd);
ftp.upload("", false);
ftp.uploadSecure(@"Filepath", false);
ftp.close();
}
catch (Exception e)
{
Console.WriteLine("Caught Error :" + e.Message);
}
}
这是 FTPFactory 类:
using System;
using System.Net.Sockets;
namespace FTP_DLL
{
public class FTPFactory
{
public FTPFactory();
public void chdir(string dirName);
public void close();
public Socket createDataSocket();
public void deleteRemoteFile(string fileName);
public void download(string remFileName);
public void download(string remFileName, bool resume);
public void download(string remFileName, string locFileName);
public void download(string remFileName, string locFileName, bool resume);
public string[] getFileList(string mask);
public long getFileSize(string fileName);
public string getRemoteHost();
public string getRemotePath();
public int getRemotePort();
public void getSslStream();
public void getSslStream(Socket Csocket);
public void login();
public void loginWithoutUser();
public void mkdir(string dirName);
public void renameRemoteFile(string oldFileName, string newFileName);
public void rmdir(string dirName);
public void sendCommand(string command);
public void setBinaryMode(bool mode);
public void setDebug(bool debug);
public void setRemoteHost(string remoteHost);
public void setRemotePass(string remotePass);
public void setRemotePath(string remotePath);
public void setRemotePort(int remotePort);
public void setRemoteUser(string remoteUser);
public void setUseStream(bool value);
public void upload(string fileName, bool resume);
public void uploadSecure(string fileName, bool resume);
}
}