Azure Проблема с хранилищем BLOB-объектов при загрузке файла - PullRequest
0 голосов
/ 16 июня 2020

Я работаю над функциональностью, позволяющей пользователям загружать Azure элементы хранилища BLOB-объектов.

Я пытаюсь получить список BLOB-объектов, используя:

 var list = await container.GetBlobsAsync(BlobTraits.All, BlobStates.All, string.Empty).ConfigureAwait(false);

Вот у меня есть ошибка:

Ошибка CS1061 'ConfiguredCancelableAsyncEnumerable' не содержит определения для 'GetAwaiter' и не может быть найден доступный метод расширения 'GetAwaiter', принимающий первый аргумент типа 'ConfiguredCancelableAsyncEnumerable' (являются вам не хватает директивы using или ссылки на сборку?)

Доступен ли asyn c для C# 7.3? Или использовать вызовы Asyn c для получения всех BLOB-объектов в контейнере, который мне нужно обновить до 8.0 C#?

Если я изменю код на этот:

            await foreach (BlobItem page in container.GetBlobsAsync(BlobTraits.None, BlobStates.None, string.Empty))
            {
                yield return container.GetBlobClient(page.Name);
            }

Тогда У меня такая ошибка:

Ошибка CS8370 Функция asyn c streams недоступна в C# 7.3. Используйте языковую версию 8.0 или выше.

Я знаю, что GetBlobsAsyn c () возвращает AsyncPageable<>, и я предполагаю, что он доступен только в C# 8.0?

1 Ответ

2 голосов
/ 16 июня 2020

Это 2 варианта, о которых я могу думать:

  1. обновить вашу версию langVersion до 8, которую вы говорите, что не хотите делать
  2. используйте перечислитель, например,

    var blobs = blobContainerClient.GetBlobsAsync()
    List<BlobItem> blobList = new List<BlobItem>();
    IAsyncEnumerator<BlobItem> enumerator = blobs.GetAsyncEnumerator();
    try
    {
        while (await enumerator.MoveNextAsync())
        {
            blobList.Add(enumerator.Current);
        }
    }
    finally
    {
        await enumerator.DisposeAsync();
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...