如何依赖注入SFTP连接?

时间:2019-05-20 10:08:00

标签: c#

如何在多个任务上使用相同的SFTP连接? 我有许多类文件,它们执行一些任务,例如本例中的一些任务,它们从不同的目录检索数据并处理数据。 我想要做的是拥有一个“ global" sftp connection”,我可以使用它来从SFTP检索数据。

我想要做的是,如果它试图获取SFTP并且它是“ closed/no connection/timeout",我希望它创建一个新的连接。 我该如何实现?下面是我正在执行的任务之一的示例。

private async Task<data> ReadDataAsync(string filePath)
        {
            var data= new data();

            using (var sftp = new SftpClient(_host, _username, _password))
            {
                sftp.Connect();
                try
                {
                    using (var fs = sftp.OpenRead(filePath))
                    {
                        using (var r= new StreamReader(fs))
                        {
                            data = await ParseDataFromFile(r);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("An exception has been caught " + e.ToString());
                }
                finally
                {
                    sftp.Disconnect();
                }
            }

            return data ;
        }

1 个答案:

答案 0 :(得分:0)

这是包装SFTPClient并将其注入所需位置的好帖子:

https://medium.com/cheranga/implementing-an-sftp-wrapper-using-ssh-net-f85ac8f38e5f