Odstranění a obnovení kontejneru objektů blob pomocí .NET

Tento článek ukazuje, jak odstranit kontejnery pomocí klientské knihovny Azure Storage pro .NET. Pokud jste povolili obnovitelné odstranění kontejneru, můžete odstraněné kontejnery obnovit.

Předpoklady

  • Tento článek předpokládá, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou služby Azure Blob Storage pro .NET. Další informace o nastavení projektu, včetně instalace balíčku, přidání using direktiv a vytvoření autorizovaného objektu klienta, najdete v tématu Začínáme se službou Azure Blob Storage a .NET.
  • Autorizační mechanismus musí mít oprávnění k odstranění kontejneru objektů blob nebo obnovení obnovitelného odstraněného kontejneru. Další informace najdete v pokynech k autorizaci pro následující operace rozhraní REST API:

Odstranění kontejneru

Pokud chcete odstranit kontejner v .NET, použijte jednu z následujících metod:

Metody Delete a DeleteAsync vyvolá výjimku, pokud kontejner neexistuje.

Metody DeleteIfExists a DeleteIfExistsAsync vrací logickou hodnotu označující, zda byl kontejner odstraněn. Pokud zadaný kontejner neexistuje, vrátí tyto metody hodnotu False , což znamená, že kontejner nebyl odstraněn.

Po odstranění kontejneru nemůžete vytvořit kontejner se stejným názvem alespoň po dobu 30 sekund. Pokus o vytvoření kontejneru se stejným názvem selže s kódem chyby HTTP 409 (Konflikt). Všechny ostatní operace v kontejneru nebo objektech blob, které obsahuje, selžou s kódem chyby HTTP 404 (Nenalezena).

Následující příklad odstraní zadaný kontejner a zpracuje výjimku, pokud kontejner neexistuje:

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

Následující příklad ukazuje, jak odstranit všechny kontejnery, které začínají zadanou předponou.

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

Obnovení odstraněného kontejneru

Pokud je pro účet úložiště povolené obnovitelné odstranění kontejneru, může se po odstranění obnovit kontejner a jeho obsah během zadané doby uchovávání. Obnovitelně odstraněný kontejner můžete obnovit voláním některé z následujících metod třídy BlobServiceClient .

Následující příklad najde odstraněný kontejner, získá ID verze tohoto odstraněného kontejneru a pak předá toto ID do UndeleteBlobContainerAsync metody pro obnovení kontejneru.

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

Zdroje informací

Další informace o odstranění kontejneru pomocí klientské knihovny Azure Blob Storage pro .NET najdete v následujících zdrojích informací.

Operace rozhraní REST API

Sada Azure SDK pro .NET obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat .NET. Metody klientské knihovny pro odstranění nebo obnovení kontejneru používají následující operace rozhraní REST API:

Prostředky klientské knihovny

Viz také