C# 如何从Azure BLOB中的目录获取所有文件

C# 如何从Azure BLOB中的目录获取所有文件,c#,azure,azure-blob-storage,C#,Azure,Azure Blob Storage,我们正在Azure BLOB存储中存储应用程序日志。我们目前正在使用完整的URI下载文件。每次更改Azure BLOB的设置时,文件名也会更改。因此,由于文件不存在,我们得到了错误 建议一种方法,使用文件扩展名从目录中获取文件,而不在UI中使用文件名。使用ListBlobs()方法检索特定容器的所有blob,然后可以使用静态.NETPath.GetExtension()方法检索文件扩展名,以便对其进行筛选。例如: var storageAccount = CloudStorageAccount.

我们正在
Azure BLOB
存储中存储应用程序日志。我们目前正在使用完整的URI下载文件。每次更改
Azure BLOB
的设置时,文件名也会更改。因此,由于文件不存在,我们得到了错误

建议一种方法,使用文件扩展名从目录中获取文件,而不在UI中使用文件名。

使用
ListBlobs()
方法检索特定容器的所有blob,然后可以使用静态.NET
Path.GetExtension()
方法检索文件扩展名,以便对其进行筛选。例如:

var storageAccount = CloudStorageAccount.Parse("yourCS");

var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(container);

var list = container.ListBlobs();
var blobs = list.OfType<CloudBlockBlob>()
    .Where(b => Path.GetExtension(b.Name).Equals("yourextension"))
var-storageAccount=CloudStorageAccount.Parse(“yourCS”);
var blobClient=storageAccount.CreateCloudBlobClient();
var container=blobClient.GetContainerReference(容器);
var list=container.ListBlobs();
var blobs=list.OfType()
.Where(b=>Path.GetExtension(b.Name).Equals(“yourextension”))

这里值得注意的是,过滤将在客户端进行。它将首先列出blob容器中的所有blob,然后应用筛选。根据容器中水滴的数量,这可能需要一些时间。这似乎过时了。我找不到任何
ListBlobs
只有一个
ListBlobsSegmentedAsync
而且那东西没有类型为
方法是的,它似乎没有很好地保存。使用CloudBlobDirectory:CloudBlobDirectory directory=container.GetDirectoryReference(directoryPath);var blobs=directory.ListBlobs();CloudBlobDirectory.ListBlobs()也不再存在。