如何从Azure网站计划作业连接远程SFTP

RAS*_*KOV 3 c# sftp winscp azure-web-sites azure-webjobs

我有一个控制台应用程序,将安排在AZURE网站上的工作.从该控制台应用程序我想连接远程SFTP并获取所有文件并将它们保存在AZURE网站内的我的文件夹中.如果可以在转移后从SFTP中删除它们.

RAS*_*KOV 5

首先,在这种情况下使用的最佳和免费选项是WinSCP .NET程序集.

你可以从这里下载

所以让我们开始这个功能:

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);
            }

        }

    }
Run Code Online (Sandbox Code Playgroud)

这个功能有什么作用?它只获取SFTP凭据并登录到SFTP.并列出所有文件名.并将每个文件保存在AZURE网站ftp中.删除传输的文件后.

  • source是SFTP文件夹
  • 要从SFTP传输文件的目的地.在AZURE网站中,它看起来像这样D:\ home\site\wwwroot\YourFolderName