我有一个控制台应用程序,它将被安排为 AZURE 网站中的作业。 我想从该控制台应用程序连接远程 SFTP 并获取所有文件并将它们保存在我在 AZURE 网站内的文件夹中。此外,如果可能的话,在传输后将它们从 SFTP 中删除。
最佳答案
首先在这种情况下使用的最佳和免费选项是 WinSCP .NET assembly .
可以从here下载
那么让我们开始这个函数:
public static void GetSftp(string host, string user, string password, int port, string source, string dest, string remoteDest)
{
Directory.CreateDirectory(dest);
var winScpSessionOptions = new SessionOptions
{
HostName = host,
Password = password,
PortNumber = port,
UserName = user,
Protocol = Protocol.Sftp,
GiveUpSecurityAndAcceptAnySshHostKey = true
};
var session = new Session();
session.Open(winScpSessionOptions);
var remoteDirInfo = session.ListDirectory(remoteDest);
foreach (RemoteFileInfo fileInfo in remoteDirInfo.Files)
{
if (fileInfo.Name.Equals(".") || fileInfo.Name.Equals("..")) { continue; }
Console.WriteLine("{0}", remoteDest + fileInfo.Name);
try
{
var x = remoteDest +"/"+ fileInfo.Name;
var y = dest +"\\"+ fileInfo.Name;
var result = session.GetFiles(x, y);
if (!result.IsSuccess)
{
}
else
{
session.RemoveFiles(remoteDest +"/"+ fileInfo.Name);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
这个函数是做什么的? 它只是获取 SFTP 凭据并登录到 SFTP。并列出所有文件名。并将每个文件保存在 AZURE 网站 ftp 中。删除传输的文件后。
- 源是SFTP文件夹
- 要从 SFTP 传输文件的目标。在 AZURE 网站中,它看起来像这样 D:\home\site\wwwroot\YourFolderName
关于c# - 如何从 Azure 网站计划作业连接远程 SFTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364881/