Я не могу воспроизвести вашу проблему с тем же кодом в консольном приложении (и если вы запускаете свой код с какой-то особой настройкой / средой, укажите это).
Пожалуйста, убедитесь, что-то:
1.проверьте, если вы установили открытый доступ к BLOB-объектам на портале Azure, и проверьте свой код, если используется тот же BLOB-объект / контейнер.
2.Пожалуйста, используйте последнюю версию пакета WindowsAzure.Storage
,9.3.3.
И еще одну вещь, которую вам также нужно знать: после кода blockBlob.Metadata.Clear()
вам нужно использовать blockBlob.SetMetadata()
.Или метаданные не будут удалены.
Код, который я использовал:
CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials("account", "key"), true);
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
var cloudBlobContainer = cloudBlobClient.GetContainerReference("test-2");
var imageURL = "https://xx.blob.core.windows.net/test-2/sample.JPG";
var fileName = imageURL.Substring(imageURL.LastIndexOf(@"/") + 1);
var req = System.Net.WebRequest.Create(imageURL);
using (Stream filestream = req.GetResponse().GetResponseStream())
{
CloudBlockBlob blockBlob = cloudBlobContainer.GetBlockBlobReference(fileName);
bool existsTask = await blockBlob.ExistsAsync();
if (existsTask == true)
{
await blockBlob.CreateSnapshotAsync();
blockBlob.Metadata.Clear();
blockBlob.SetMetadata(); // add this line of code to ensure the changes to metadata is committed.
}
}
Пожалуйста, дайте мне знать, если у вас есть другие проблемы.