Share via


Ta bort och återställa en blobcontainer med .NET

Den här artikeln visar hur du tar bort containrar med Azure Storage-klientbiblioteket för .NET. Om du har aktiverat mjuk borttagning av containrar kan du återställa borttagna containrar.

Förutsättningar

  • Den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för .NET. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, tillägg using av direktiv och skapande av ett auktoriserat klientobjekt finns i Kom igång med Azure Blob Storage och .NET.
  • Auktoriseringsmekanismen måste ha behörighet att ta bort en blobcontainer eller återställa en mjuk borttagen container. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:

Ta bort en container

Om du vill ta bort en container i .NET använder du någon av följande metoder:

Metoderna Delete och DeleteAsync utlöser ett undantag om containern inte finns.

Metoderna DeleteIfExists och DeleteIfExistsAsync returnerar ett booleskt värde som anger om containern har tagits bort. Om den angivna containern inte finns returnerar dessa metoder False för att indikera att containern inte har tagits bort.

När du har tagit bort en container kan du inte skapa en container med samma namn på minst 30 sekunder. Försök att skapa en container med samma namn misslyckas med HTTP-felkoden 409 (konflikt). Andra åtgärder i containern eller blobarna som den innehåller misslyckas med HTTP-felkoden 404 (hittades inte).

I följande exempel tas den angivna containern bort och undantaget hanteras om containern inte finns:

//-------------------------------------------------
// 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();
    }
}

I följande exempel visas hur du tar bort alla containrar som börjar med ett angivet prefix.

//-------------------------------------------------
// 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;
    }
}

Återställa en borttagen container

När mjuk borttagning av containrar är aktiverat för ett lagringskonto kan en container och dess innehåll återställas efter att den har tagits bort inom en kvarhållningsperiod som du anger. Du kan återställa en mjuk borttagen container genom att anropa någon av följande metoder i klassen BlobServiceClient .

I följande exempel hittar du en borttagen container, hämtar versions-ID:t för den borttagna containern och skickar sedan det ID:t till metoden UndeleteBlobContainerAsync för att återställa containern.

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);
            }
        }
    }
}

Resurser

Mer information om hur du tar bort en container med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.

REST API-åtgärder

Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. Klientbiblioteksmetoderna för att ta bort eller återställa en container använder följande REST API-åtgärder:

Klientbiblioteksresurser

Se även