使用功能应用程序将文件从Sftp移动到Azure容器

时间:2018-04-01 14:55:13

标签: c# azure azure-web-sites azure-active-directory azure-storage

我正在编写一个C#程序来将文件从Sftp移动到Azure容器。使用visual studio我可以将文件从sftp移动到容器。我想通过Azure功能应用程序来实现它。下面是我在visual studio中编写的代码。在azure功能应用程序中我收到很多错误,包括未找到引用。 任何人都可以建议我如何在azure功能应用程序中使用此代码?

using System;
using System.Threading;
using System.IO;
using System.Configuration;
using Renci.SshNet;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.Auth;
using Newtonsoft.Json;
using System.Linq;
using Microsoft.Win32;
using System.Xml;
using System.Collections.Generic;


public class CloudStorageAccount 
{
const string host = "";
const string username = "";
const string password = "";
const string workingdirectory = "/home/Inbound/";
const int port = 22;
//Connection to the sftp

const string StorageAccountName = "";
const string StorageAccountKey = "";

StorageCredentials storageCredentials = new 
StorageCredentials(StorageAccountName, StorageAccountKey);
CloudStorageAccount cloudStorageAccount = new 
CloudStorageAccount(storageCredentials, useHttps: true);
CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("sample");

var blobs = container.ListBlobs();


 using (var client = new SftpClient(host, port, username, password))
        {
            client.Connect();
            client.ChangeDirectory(workingdirectory);
            var listDirectory = client.ListDirectory(workingdirectory);

             foreach (var fi in listDirectory)
            {

                if (fi.Name.Contains(".txt"))
                {
                    string remoteFileName = fi.Name;
                    using (StreamReader file1 = new 
 StreamReader(client.OpenRead(source + remoteFileName)))

                    {
                        String oldContent = file1.ReadToEnd();

                    CloudBlockBlob blob = container.GetBlockBlobReference(remoteFileName);

                    blob.UploadText(oldContent);

                    }
                }
            }
        }
}

由于

2 个答案:

答案 0 :(得分:0)

您需要确保通过Rensi.SshNet包含所有非框架依赖项(Newtonsoft.Jsonproject.json)。见related issue on github。您可能需要通过System样式调用包含框架依赖项(以#r "System.Linq"开头)。

答案 1 :(得分:0)

在此之前,您可以参考an introduction to Azure Functions以了解有关Azure功能的更多信息。

我们也可以创建Azure function Application with VS。您可以按照此tutorial进行操作。

  

在天蓝色功能应用程序中,我收到很多错误,包括未找到引用。

如果可能,异常屏幕截图会更有帮助。