我一直在使用WindowsAzure.Storage 8.* 库与容器一起使用,以移动一些blob。最近,我想使用Microsoft网站上的示例中的以下代码来获取blob列表。(https://learn.microsoft.com/en-us/azure/storage/storage-dotnet-how-to-use-blob #set-up-your-development-environment)当我尝试使用“ListBlobs()”时,该方法不再可通过库使用。我以前在控制台应用程序中使用该方法,而现在我尝试在.net核心Web应用程序中使用该方法。是否有不同的方法可以在不同的环境中获取blob列表?我只是不确定为什么该方法在相同的命名空间/库/版本中不可用a a.
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("photos");
// Loop over items within the container and output the length and URI.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
if (item.GetType() == typeof(CloudBlockBlob))
{
CloudBlockBlob blob = (CloudBlockBlob)item;
Console.WriteLine("Block blob of length {0}: {1}", blob.Properties.Length, blob.Uri);
}
else if (item.GetType() == typeof(CloudPageBlob))
{
CloudPageBlob pageBlob = (CloudPageBlob)item;
Console.WriteLine("Page blob of length {0}: {1}", pageBlob.Properties.Length, pageBlob.Uri);
}
else if (item.GetType() == typeof(CloudBlobDirectory))
{
CloudBlobDirectory directory = (CloudBlobDirectory)item;
Console.WriteLine("Directory: {0}", directory.Uri);
}
}
3条答案
按热度按时间pdtvr36n1#
根据这个问题:Missing syncronous methods for dotnet core?,NetCore/NetStandard支持尚不包括API的Sync实现。
由于ListBlobs是同步方法,因此在不支援同步方法的平台上会遗失,因此您只需要呼叫ListBlobsSegmentedAsync并行程它传回的接续词语基元。
有关如何使用ListBlobsSegmentedAsync列出blob的更多详细信息,您可以参考以下链接的示例:CloudBlobClient.ListBlobsSegmentedAsync Method
deyfvvtc2#
Microsoft从9.4.2 SDK中恢复了同步实现:https://github.com/Azure/azure-storage-net/tree/master/Blob
2lpgd9683#
正如白兰度所说,他们在SDK中重新引入了同步方法,但现在已经过时了。
...使用Azure Storage Blobs