如何实现控制台应用程序以从Azure中的FTP存储读取xml文件?

问题描述:

我想创建一些控制台应用程序。在这个控制台应用程序中,我希望从某个位置(具有FTP访问权限的Azure中的某个位置)读取预定的所有xml文件,并且为每个获得的xml文件我想在Office 365站点中创建一个新的列表项。我正在考虑将控制台应用程序作为Azure webjob实现。 Azure有没有可能通过FTP将文件添加到某个位置?此位置还需要从Azure Web作业访问。如何实现控制台应用程序以从Azure中的FTP存储读取xml文件?

是的,如果您正在寻找FTP Azure实例,您可以按照以下文章https://ftp2azure.codeplex.com/来实现它,并使用.Net FTP客户端将文件移动到FTP位置。

AzCopy实用程序也是这类操作中广泛使用的工具。

建议使用Azure blob使用REST端点存储此类XML文件,从而提供更高的吞吐量和更高的安全性。

由于多种原因,使用Azure功能代替Azure Web作业更好,例如应用服务上托管的Web作业共享您实际需要的资源,以便您的Web应用或其他应用运行,并且它也是一部分的应用服务计划。此外,由于Microsoft Azure本身提倡Azure功能而不是Web作业,因此网络作业已经过时了。请参阅https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs 并据此作出决定。

Azure有没有可能通过FTP将文件添加到某个位置?此位置还需要从Azure Web作业访问。

首先,我们知道,应用服务能帮助我们access site’s files via FTP,我们可以运行控制台应用程序在Azure的应用程序服务的Web应用程序WebJobs,我们还可以访问由网站D:\home文件在WebJobs功能,像这样。

string targetDirectory = @"D:\home\myxml"; 

List<string> fileEntries = Directory.GetFiles(targetDirectory).Where(f => Path.GetExtension(f) == ".xml").ToList(); 

foreach (var item in fileEntries) 
{ 
    Console.WriteLine(item); 
} 

但是应用服务具有limited storage space,我们不应该存储网站服务器上太多的静态文件。正如Mohammed Shamil所说,如果可能的话,您可以尝试将您的XML文件存储在Azure存储中。一些存储工具(如AzCopy,Azure存储资源管理器等)可以用来轻松上传/下载文件。