Я думаю, что вы используете пакет nuget WindowsAzure.Storage
, и в этом пакете нет синхронных методов для ядра dotnet, вы можете обратиться к этой проблеме github для получения более подробной информации.
Так что, если вы используете вышеуказанный пакет nuget, вы должны использовать метод Async, например FetchAttributesAsync
вместо FetchAttributes
.
Но теперь появился новый пакет nuget Microsoft.Azure.Storage.Blob , версия 9.4.2, и он поддерживает синхронные методы (например, FetchAttributes
) для ядра dotnet.
Пожалуйста, используйте новый пакет, и пример кода с .net core 2.1 отлично работает на моей стороне.
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
namespace ConsoleApp4netcore
{
class Program
{
static void Main(string[] args)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("xxxxx");
var blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = blobClient.GetContainerReference("test-1");
CloudBlobDirectory directory = cloudBlobContainer.GetDirectoryReference("sub1");
foreach (IListBlobItem blobItem in directory.ListBlobsSegmentedAsync(null).Result.Results)
{
if (blobItem is CloudBlockBlob blob)
{
//the new package supports syncronous method
blob.FetchAttributes();
foreach (var metadataItem in blob.Metadata)
{
Console.WriteLine("\tKey: {0}", metadataItem.Key);
Console.WriteLine("\tValue: {0}", metadataItem.Value);
}
}
}
Console.ReadLine();
}
}
}