使用 .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 中刪除容器,請使用下列其中一種方法:
如果容器不存在, Delete 和 DeleteAsync 方法會擲回例外狀況。
DeleteIfExists 和 DeleteIfExistsAsync 方法會傳回布林值,指出容器是否已刪除。 如果指定的容器不存在,則這些方法會傳回 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 作業:
用戶端程式庫資源
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應