Большой двоичный объект хранилища Azure загружает старую версию файла

#c# #azure #azure-storage #azure-blob-storage

#c# #azure #azure-хранилище #azure-blob-хранилище

Вопрос:

Я столкнулся с проблемой при загрузке azure blob-файла со старым загружаемым файлом.Вот шаги.

Во время загрузки.. используется следующий код.

                 BlobClient blobClient = containerClient.GetBlobClient(fileNamePrefix);
                if (blobClient.Exists())
                {
                    await blobClient.DeleteIfExistsAsync(DeleteSnapshotsOption.IncludeSnapshots);
                    await blobClient.UploadAsync(stream, true);
                }
 

Хотя описанный выше процесс работает хорошо, и в хранилище больших двоичных объектов я вижу обновленный файл, если тот же большой двоичный объект уже существовал.

После того, как это будет сделано, если я выполню операцию загрузки.

 BlobClient blobClient = containerClient.GetBlobClient(blobName);
await blobClient.DownloadToAsync(mstream);
 

Я все еще вижу старый файл. Таким образом, несмотря на то, что в хранилище существует новый файл, операция выдает мне старый файл.

Непонятно, почему это происходит, но любая идея была бы полезна.

Спасибо.

Комментарии:

1. Вы должны использовать BlobClient для удаления моментального снимка. ожидание blobClient. DeleteIfExistsAsync(удаляет параметр snapshotsoption. Включает в себя SNAPSHOTS, null, по умолчанию);

2. Спасибо! он работает идеально

3. я думал, что это сработало. но это не так, часть загрузки по-прежнему загружает более старую version.in хранение файл выглядит перезаписанным идеально.

4. @MandarJogalekar какую версию пакета больших двоичных объектов вы используете? и насколько велик файл большого двоичного объекта? и вам лучше предоставить пример кода, который можно использовать для создания проблемы, я думаю, что в вашем коде может быть небольшая ошибка.

5. я использую azure.storage.blobs 12.7.0. большой двоичный объект, который я тестирую, имеет очень маленький размер 5-10 Кб. . Я уже привел код выше в вопросе

Ответ №1:

Помещая его здесь, чтобы кто-нибудь еще столкнулся с проблемой. Поможет им.

Вы должны использовать BlobClient для удаления моментального снимка. ожидание blobClient.DeleteIfExistsAsync(удаляет параметр snapshotsoption.Включает в себя SNAPSHOTS, null, по умолчанию);

Пожалуйста, отметьте это как ответ для других 🙂