Een blobcontainer verwijderen en herstellen met .NET

In dit artikel wordt beschreven hoe u containers verwijdert met de Azure Storage-clientbibliotheek voor .NET. Als u voorlopig verwijderen van containers hebt ingeschakeld, kunt u verwijderde containers herstellen.

Vereisten

  • In dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor .NET. Zie Aan de slag met Azure Blob Storage en .NET voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het toevoegen van using instructies en het maken van een geautoriseerd clientobject.
  • Het autorisatiemechanisme moet machtigingen hebben om een blobcontainer te verwijderen of om een voorlopig verwijderde container te herstellen. Zie de autorisatierichtlijnen voor de volgende REST API-bewerkingen voor meer informatie:

Een container verwijderen

Als u een container in .NET wilt verwijderen, gebruikt u een van de volgende methoden:

Met de methoden Delete en DeleteAsync wordt een uitzondering gegenereerd als de container niet bestaat.

De methoden DeleteIfExists en DeleteIfExistsAsync retourneren een Booleaanse waarde die aangeeft of de container is verwijderd. Als de opgegeven container niet bestaat, retourneren deze methoden False om aan te geven dat de container niet is verwijderd.

Nadat u een container hebt verwijderd, kunt u gedurende ten minste 30 seconden geen container met dezelfde naam maken. Als u probeert een container met dezelfde naam te maken, mislukt de HTTP-foutcode 409 (Conflict). Alle andere bewerkingen in de container of de blobs die deze bevat, mislukken met HTTP-foutcode 404 (niet gevonden).

In het volgende voorbeeld wordt de opgegeven container verwijderd en wordt de uitzondering verwerkt als de container niet bestaat:

//-------------------------------------------------
// Delete a container
//-------------------------------------------------
private static async Task DeleteSampleContainerAsync(BlobServiceClient blobServiceClient, string containerName)
{
    BlobContainerClient container = blobServiceClient.GetBlobContainerClient(containerName);

    try
    {
        // Delete the specified container and handle the exception.
        await container.DeleteAsync();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

In het volgende voorbeeld ziet u hoe u alle containers verwijdert die beginnen met een opgegeven voorvoegsel.

//-------------------------------------------------
// Delete all containers with the specified prefix
//-------------------------------------------------
private static async Task DeleteContainersWithPrefixAsync(BlobServiceClient blobServiceClient, string prefix)
{
    Console.WriteLine("Delete all containers beginning with the specified prefix");

    try
    {
        foreach (BlobContainerItem container in blobServiceClient.GetBlobContainers())
        {
            if (container.Name.StartsWith(prefix))
            { 
                Console.WriteLine("\tContainer:" + container.Name);
                BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(container.Name);
                await containerClient.DeleteAsync();
            }
        }

        Console.WriteLine();
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Een verwijderde container herstellen

Wanneer voorlopig verwijderen van containers is ingeschakeld voor een opslagaccount, kunnen een container en de inhoud ervan worden hersteld nadat deze is verwijderd, binnen een retentieperiode die u opgeeft. U kunt een voorlopig verwijderde container herstellen door een van de volgende methoden van de klasse BlobServiceClient aan te roepen.

In het volgende voorbeeld wordt een verwijderde container gevonden, wordt de versie-id van die verwijderde container ophaalt en die id vervolgens doorgegeven aan de methode UndeleteBlobContainerAsync om de container te herstellen.

public static async Task RestoreContainer(BlobServiceClient client, string containerName)
{
    await foreach (BlobContainerItem item in client.GetBlobContainersAsync
        (BlobContainerTraits.None, BlobContainerStates.Deleted))
    {
        if (item.Name == containerName && (item.IsDeleted == true))
        {
            try 
            { 
                await client.UndeleteBlobContainerAsync(containerName, item.VersionId);
            }
            catch (RequestFailedException e)
            {
                Console.WriteLine("HTTP error code {0}: {1}",
                e.Status, e.ErrorCode);
                Console.WriteLine(e.Message);
            }
        }
    }
}

Resources

Zie de volgende resources voor meer informatie over het verwijderen van een container met behulp van de Azure Blob Storage-clientbibliotheek voor .NET.

REST API-bewerkingen

De Azure SDK voor .NET bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende .NET-paradigma's. De clientbibliotheekmethoden voor het verwijderen of herstellen van een container maken gebruik van de volgende REST API-bewerkingen:

Clientbibliotheekbronnen

Zie ook