Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak usunąć kontenery z biblioteką klienta usługi Azure Storage dla platformy .NET. Jeśli włączono miękkie usuwanie kontenera, możesz przywrócić usunięte kontenery.
Prerequisites
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — utwórz konto usługi Azure Storage
- Najnowszy zestaw .NET SDK dla systemu operacyjnego. Pamiętaj, aby pobrać zestaw SDK, a nie środowisko uruchomieniowe.
Konfigurowanie środowiska
Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla platformy .NET. Kroki obejmują instalację pakietu, dodawanie using dyrektyw i tworzenie autoryzowanego obiektu klienta. Aby uzyskać szczegółowe informacje, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i .NET.
Instalowanie pakietów
Z katalogu projektu zainstaluj pakiety dla bibliotek klienta Azure Blob Storage oraz Azure Identity, używając polecenia dotnet add package. Pakiet Azure.Identity jest wymagany w przypadku połączeń bez hasła z usługami platformy Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Dodaj dyrektywy using
Dodaj te using dyrektywy na początku pliku kodu:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Niektóre przykłady kodu w tym artykule mogą wymagać dodatkowych using dyrektyw.
Tworzenie obiektu klienta
Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie BlobServiceClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Możesz zarejestrować klienta usługi na potrzeby iniekcji zależności w aplikacji .NET.
Można również tworzyć obiekty klienta dla określonych kontenerów lub obiektów blob. Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.
Authorization
Mechanizm autoryzacji musi mieć niezbędne uprawnienia do usuwania lub przywracania kontenera. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej roli Storage Blob Data Contributor platformy Azure RBAC lub wyższej. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące usuwania kontenera (interfejsu API REST) i przywracania kontenera (interfejs API REST).
Usuwanie kontenera
Aby usunąć kontener na platformie .NET, użyj jednej z następujących metod:
Metody Delete i DeleteAsync zgłaszają wyjątek, jeśli kontener nie istnieje.
Metody DeleteIfExists i DeleteIfExistsAsync zwracają wartość logiczną wskazującą, czy kontener został usunięty. Jeśli określony kontener nie istnieje, te metody zwracają wartość False , aby wskazać, że kontener nie został usunięty.
Po usunięciu kontenera nie można utworzyć kontenera o tej samej nazwie przez co najmniej 30 sekund. Próba utworzenia kontenera o tej samej nazwie zakończy się niepowodzeniem z kodem błędu HTTP 409 (konflikt). Jakiekolwiek inne operacje na kontenerze lub zawartych w nim obiektach blob zakończą się niepowodzeniem z kodem błędu HTTP 404 (Not Found).
Poniższy przykład usuwa określony kontener i obsługuje wyjątek, jeśli kontener nie istnieje:
//-------------------------------------------------
// 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();
}
}
W poniższym przykładzie pokazano, jak usunąć wszystkie kontenery rozpoczynające się od określonego prefiksu.
//-------------------------------------------------
// 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;
}
}
Przywracanie usuniętego kontenera
Gdy dla konta magazynu włączone jest miękkie usuwanie kontenera, kontener i jego zawartość mogą zostać odzyskane po usunięciu, w określonym przez Ciebie okresie przechowywania. Kontener tymczasowo usunięty można przywrócić, wywołując jedną z następujących metod klasy BlobServiceClient.
Poniższy przykład znajduje usunięty kontener, pobiera identyfikator wersji usuniętego kontenera, a następnie przekazuje ten identyfikator do metody UndeleteBlobContainerAsync w celu przywrócenia kontenera.
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);
}
}
}
}
Resources
Aby dowiedzieć się więcej na temat usuwania kontenera przy użyciu biblioteki klienta usługi Azure Blob Storage dla platformy .NET, zobacz następujące zasoby.
Operacje interfejsu API REST
Zestaw Azure SDK dla platformy .NET zawiera biblioteki, które są oparte na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów platformy .NET. Metody biblioteki klienta do usuwania lub przywracania kontenera używają następujących operacji interfejsu API REST:
- Usuwanie kontenera (interfejs API REST)
- Przywracanie kontenera (interfejs API REST)
Zasoby biblioteki klienta
Zobacz także
Treści powiązane
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla platformy .NET. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji platformy .NET.