эмулятор и функция хранилища Azure - запуск по имени файла с использованием guid и расширением -why? - PullRequest
0 голосов
/ 18 октября 2019

Это заняло некоторое время, чтобы отследить.

У меня есть этот код, который работает

            CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
        var uploadedContainer = cloudBlobClient.GetContainerReference("uploadedfiles");
        uploadedContainer.CreateIfNotExists(new BlobRequestOptions() { RetryPolicy = new NoRetry() }, null);

        var directory = uploadedContainer.GetDirectoryReference(path);
        CloudBlockBlob cloudBlockBlob = directory.GetBlockBlobReference($"dave.pdf");

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

CloudBlockBlob cloudBlockBlob = directory.GetBlockBlobReference($"{Guid.NewGuid().ToString()}.pdf");

Очень расстраивает. Ошибка:

[18/10/2019 14:37:36] Произошло необработанное исключение. Хост закрывается. [18/10/2019 14:37:36] Microsoft.WindowsAzure.Storage: сервер обнаружил внутреннюю ошибку. Пожалуйста, повторите попытку через некоторое время.

Отличное использование сообщения об ошибке - спасибо!

Я хочу иметь возможность использовать guid здесь. Документы для соглашений об именах, кажется, говорят, что это правовая ситуация найдена здесь

у кого-то должна быть идея!

следующие имена файлов работают

"s-a" "dave.pdf" $"{Guid.New().ToString()}"

Это не работает $"{Guid.New().ToString()}.pdf"

1 Ответ

0 голосов
/ 21 октября 2019

Предположим, это вызвано Path.GetFileName, я не тестирую этим методом, я просто тестирую с помощью guid, и он может работать для меня. Ниже приведен мой тестовый код, может быть, вы могли бы изменить GetBlockBlobReference.

       string storageConnectionString = "connection string";

        CloudStorageAccount storageAccount;

        CloudStorageAccount.TryParse(storageConnectionString, out storageAccount);

        CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

        CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("test");
        string sourceFile = "C:\\Users\\georgec\\Downloads\\fileshare\\1.txt";

        String Path = "image/";
        var directory = cloudBlobContainer.GetDirectoryReference(Path);

        CloudBlockBlob cloudBlockBlob = directory.GetBlockBlobReference($"{Guid.NewGuid().ToString()}.txt");


        await cloudBlockBlob.UploadFromFileAsync(sourceFile);

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...