Соединение с хранилищем BLOB-объектов функций Azure: недопустимый формат значения '*' - PullRequest
2 голосов
/ 25 мая 2019

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

namespace Test
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "test")] HttpRequest req,
            ILogger log)
        {
            var azureStorage = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
            var blobClient = azureStorage.CreateCloudBlobClient();
            var container = blobClient.GetContainerReference("migrated-load-sets-localhost");
            var blobReference = container.GetBlockBlobReference("11016093-2f6e-4631-97c1-04f8acfb2370");
            var memoryStream = new MemoryStream();
            var accessCondition = AccessCondition.GenerateIfExistsCondition();
            var blobRequestOptions = new BlobRequestOptions();
            await blobReference.DownloadToStreamAsync(memoryStream, accessCondition, blobRequestOptions, null);
            var text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
            return new OkObjectResult(text);
        }
    }
}

Когда я запускаю и нажимаю на это, я получаю ошибку

System.Private.CoreLib:Исключение при выполнении функции: Function1.Microsoft.WindowsAzure.Storage: неверный формат значения '*'.System.Net.Http: формат значения '*' недопустим.

Если я изменю

var accessCondition = AccessCondition.GenerateIfExistsCondition();

на

var accessCondition = AccessCondition.GenerateEmptyCondition();

, это работает.

При отладке я заметил, что accessCondition.IfMatchETag равен "*", поэтому кажется, что это может быть причиной.

Я что-то не так делаю, когда использую AccessCondition.GenerateIfExistsCondition(), илиесть ли ошибка в библиотеке?

1 Ответ

0 голосов
/ 27 мая 2019

В случае, если вам нужно проверить, присутствует ли BLOB-объект перед загрузкой файла, все, что вам нужно, это

if(blobReference.ExistsAsync())
{
   //Download
}
...