共用方式為


使用 .NET 刪除和還原 Blob 容器

本文說明如何使用適用於 .NET 的 Azure 儲存體用戶端程式庫來刪除容器。 如果您已啟用容器虛刪除,則可以還原已刪除的容器。

必要條件

設定您的環境

如果您沒有現有的專案,本節說明如何設定專案以使用適用於 .NET 的 Azure Blob 儲存體 客戶端連結庫。 這些步驟包括套件安裝、新增 using 指示詞,以及建立授權的客戶端物件。 如需詳細資訊,請參閱開始使用 Azure Blob 儲存體 和 .NET

安裝套件

從您的專案目錄中,使用 dotnet add package 命令安裝 Azure Blob 儲存體和 Azure 身分識別客戶端程式庫的套件。 需要 Azure.Identity 套件才能對 Azure 服務進行無密碼連線。

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

新增 using 指示詞

using將這些指示字新增至程式碼檔案頂端:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

本文中的某些程式代碼範例可能需要其他 using 指示詞。

建立用戶端物件

若要將應用程式連線到 Blob 記憶體,請建立 BlobServiceClient實例。 下列範例示範如何使用 來建立客戶端物件 DefaultAzureCredential 以進行授權:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

您也可以在 .NET 應用程式中註冊服務用戶端以進行 相依性插入 。 若要深入了解如何建立及管理用戶端物件,請參閱建立和管理與資料資源互動的用戶端端物件 (部分機器翻譯)。

授權

授權機制必須具有刪除或還原容器的必要許可權。 如需具有 Microsoft Entra ID 的授權(建議),您需要 Azure RBAC 內建角色 記憶體 Blob 數據參與者 或更高版本。 若要深入瞭解,請參閱刪除容器 (REST API)還原容器 (REST API) 的授權指引。

刪除容器

若要在 .NET 中刪除容器,請使用下列其中一種方法:

如果容器不存在, DeleteDeleteAsync 方法會擲回例外狀況。

DeleteIfExistsDeleteIfExistsAsync 方法會傳回布林值,指出容器是否已刪除。 如果指定的容器不存在,則這些方法會傳回 False ,表示未刪除容器。

刪除容器之後,您就無法建立具有相同名稱的容器至少 30 秒。 嘗試建立具有相同名稱的容器將會失敗,並出現 HTTP 錯誤碼 409 (衝突)。 對容器或其包含的 blob 進行的任何其他作業都會失敗,並出現 HTTP 錯誤碼 404 (找不到)。

下列範例會刪除指定的容器,並在容器不存在時處理例外狀況:

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

下列範例顯示如何刪除以指定前置詞開頭的所有容器。

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

還原已刪除的容器

針對儲存體帳戶啟用容器虛刪除時,可以在您指定的保留期間內對刪除的容器及其內容進行復原。 您可以透過呼叫 BlobServiceClient 類別的以下任一方法來還原虛删除的容器。

下列範例會尋找已刪除的容器、取得該已刪除容器的版本識別碼,然後將該識別碼傳遞至 UndeleteBlobContainerAsync 方法來還原容器。

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

資源

若要深入了解如何使用適用於 .NET 的 Azure Blob 儲存體用戶端程式庫刪除容器,請參閱下列資源。

REST API 操作

適用於 .NET 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 .NET 典範與 REST API 作業進行互動。 用來刪除或還原容器的用戶端程式庫方法會使用下列 REST API 作業:

用戶端程式庫資源

另請參閱