Head 404 проблема с зависимостями при попытке записи в хранилище BLOB-объектов - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть хранилище и внутри Blob с публичным доступом.но когда я пытаюсь написать документ, телеметрия в режиме реального времени отображается ниже Ошибка зависимости.

1:21:57 |Зависимость404 |65 ГОЛОВА imagesa |LogLevel = Информация |Blob = 255274.jpg

Время: 13:21:57

Продолжительность: 65 мс

Исходящая команда: HEAD imagesa

Код результата: 404

fileName =imageURL.Substring(imageURL.LastIndexOf(@"/") + 1);
var req = System.Net.WebRequest.Create(imageURL);
            using (Stream filestream = req.GetResponse().GetResponseStream())
            {
                // Get the reference to the block blob from the container
                CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(fileName);
            //create a snapshot
            bool existsTask = await blockBlob.ExistsAsync();
            if (existsTask == true)
            {
                //  the base blob's metadata is copied to the snapshot.
                await blockBlob.CreateSnapshotAsync();
                blockBlob.Metadata.Clear();
            }
}

1 Ответ

0 голосов
/ 04 марта 2019

Я не могу воспроизвести вашу проблему с тем же кодом в консольном приложении (и если вы запускаете свой код с какой-то особой настройкой / средой, укажите это).

Пожалуйста, убедитесь, что-то:

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.
                }
            }

Пожалуйста, дайте мне знать, если у вас есть другие проблемы.

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