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:
- Odstranění kontejneru (REST API)
- Obnovení kontejneru (REST API)