es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Azure.Storage.Blobs devuelve una lista diferente de WindowsAzure.Storage al momento de su creación.

Tengo este código de prueba que se conecta a Azure Blob Storage de dos maneras con las mismas credenciales, una vez con el paquete WindowsAzure.Storage ahora obsoleto y una vez con el nuevo paquete Azure.Storage.Blobs:

using Azure.Storage.Blobs;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using NUnit.Framework;
using System.Linq;

namespace EntityFrameworkTest
{
    public class AzureBlobStorageTests
    {

        [Test]
        public void TestStorage()
        {
            string storageAccount = "MiCadenaDeConexión";
            string containerName = "testazureblobobjectstore";

            var clientNew = new BlobServiceClient(storageAccount);
            var containerNew = clientNew.GetBlobContainerClient(containerName);
            containerNew.CreateIfNotExists();
            var blobsListNew = containerNew.GetBlobs();

            var accountOld = CloudStorageAccount.Parse(storageAccount);
            var clientOld = accountOld.CreateCloudBlobClient();
            var containerOld = clientOld.GetContainerReference(containerName);
            containerOld.CreateIfNotExistsAsync().GetAwaiter().GetResult();
            BlobContinuationToken config = new BlobContinuationToken();
            var blobsListOld = containerOld.ListBlobsSegmentedAsync(config).GetAwaiter().GetResult().Results;

            Assert.AreEqual(blobsListOld.Count(), blobsListNew.Count());
        }
    }
}

Las longitudes de las dos listas difieren:

En blobsListOld tengo 2 elementos:
1. El directorio.
2. Un BlockBlob con nombre __id__foo.

En blobsListNew tengo 3 elementos, todos son BlockBlob con los siguientes nombres:
1. //||!@#$%^&*()_-=+[]'<>~;:?
2. /||!@#$%^&*()_-=+[]'<>~;:?
3. __id__foo.

¿Alguien me puede explicar esto, por favor?

Tags:  

Answer

  1. Avatar for davy.ai

    La razón de la diferencia en el número de elementos de las dos listas se debe muy probablemente a la forma en que los dos paquetes manejan las convenciones de nomenclatura de los blobs.

    En el paquete WindowsAzure.Storage, las convenciones de nomenclatura de los archivos de blob son más restrictivas y no permiten ciertos caracteres especiales que sí están permitidos en el paquete Azure.Storage.Blobs más nuevo. Por lo tanto, al usar el paquete más antiguo, es probable que el blob llamado “//||!@#$%^&*()_-=+[]'<>~;:`?” sea filtrado o rechazado, mientras que el paquete más nuevo puede manejarlo e incluirlo en la lista de blobs.

    Además, es posible que el comportamiento para listar los blobs haya cambiado entre los dos paquetes, lo que potencialmente afecta el contenido de las listas. Se recomienda revisar la documentación de ambos paquetes para comprender cualquier diferencia de comportamiento y realizar los ajustes necesarios en el código.

Comments are closed.