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

标签 c# sftp azure-web-app-service azure-webjobs winscp

我有一个控制台应用程序,它将被安排为 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/

相关文章:

c# - 跨系统交易

c# - 我的 tcp 监听器监听哪个网络接口(interface)

java - Apache Mina SSHD - FileZilla 显示错误的目录结构

来自 Linux 的 Python pysftp get_r 在 Linux 上运行良好但在 Windows 上运行不正常

java - 如何让 SSHJ 在非标准端口上发起出站 SFTP?

azure - 具有多个应用程序的应用程序洞察

node.js - 更新 Azure 中的 Node 应用程序

c# - 需要帮助转换

c# - 在 UIWebView 中调用 javascript 命令

azure - 配置 Microsoft Azure Web App 的远程 IIS 管理后找不到 Microsoft.Web.Configuration.AppHostFileProvider