Копировать Azure Append Blob, получая 404 - PullRequest
0 голосов
/ 31 мая 2018

Попытка переместить добавочный BLOB-объект в другой контейнер после его обработки.Сначала я просто пытаюсь скопировать его, затем удаляю (если нет действительной функции перемещения?)

Использование C #

Я получаю 404: удаленный сервер возвратил ошибку: (404 Не Найдено.---> System.Net.WebException: удаленный сервер возвратил ошибку: (404) Not Found.at System.Net.HttpWebRequest.GetResponse ()

Я попытался создать SasToken как на уровне контейнера, так и на уровне BLOB-объектов.

private static void  copyBlob(messageClass msgPassed, CloudStorageAccount storageAccount)
    {
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer sourceContainer = blobClient.GetContainerReference(receiveScanContainer);

        //create a SAS on source blob container with "read" permission. We will append this SAS later
        var sasToken = sourceContainer.GetSharedAccessSignature(new SharedAccessBlobPolicy()
        {
            Permissions = SharedAccessBlobPermissions.Read,
            SharedAccessExpiryTime = DateTime.UtcNow.AddDays(1),
        });

        CloudBlobContainer targetContainer = blobClient.GetContainerReference(archiveContainer);

        CloudAppendBlob sourceBlob = sourceContainer.GetAppendBlobReference(msgPassed.currentName);
        var sasToken2 = sourceBlob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
        {
            Permissions = SharedAccessBlobPermissions.Read,
            SharedAccessExpiryTime = DateTime.UtcNow.AddDays(1),

        });

       CloudAppendBlob targetBlob = targetContainer.GetAppendBlobReference(msgPassed.currentName);
        string name = sourceBlob.Uri.Segments.Last();
       CloudAppendBlob destBlob = targetContainer.GetAppendBlobReference(name+sasToken2);

        targetBlob.StartCopy(destBlob);
    }

1 Ответ

0 голосов
/ 31 мая 2018

ОК ... копался в этом больше.Ниже работает.Я также передавал имя целевого контейнера немного неправильно (одна буква) из того, что на самом деле было имя контейнера.

    private static void  copyBlob(messageClass msgPassed, CloudStorageAccount storageAccount)
    {


        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer sourceContainer = blobClient.GetContainerReference(receiveScanContainer);

        CloudBlobContainer targetContainer = blobClient.GetContainerReference(archiveContainer);

        CloudAppendBlob sourceBlob = sourceContainer.GetAppendBlobReference(msgPassed.currentName);
        CloudAppendBlob targetBlob = targetContainer.GetAppendBlobReference(msgPassed.currentName);


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