Eliminare e ripristinare un contenitore BLOB con .NET
Questo articolo illustra come eliminare i contenitori con la libreria client di Archiviazione di Azure per .NET. Se l'eliminazione temporanea dei contenitori è stata abilitata, è possibile ripristinare i contenitori eliminati.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Account di archiviazione di Azure: creare un account di archiviazione
- Versione più recente di .NET SDK per il sistema operativo. Assicurarsi di ottenere l'SDK e non il runtime.
Configurazione dell'ambiente
Se non si dispone di un progetto esistente, questa sezione illustra come configurare un progetto per l'uso con la libreria client Archiviazione BLOB di Azure per .NET. I passaggi includono l'installazione dei pacchetti, l'aggiunta using
di direttive e la creazione di un oggetto client autorizzato. Per informazioni dettagliate, vedere Introduzione a Archiviazione BLOB di Azure e .NET.
Installare i pacchetti
Nella directory del progetto installare i pacchetti per le librerie client di Archiviazione BLOB di Azure e Azure Identity usando il comando dotnet add package
. Il pacchetto Azure.Identity è necessario per le connessioni senza password ai servizi di Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Aggiungere le direttive using
Aggiungere queste using
direttive all'inizio del file di codice:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Alcuni esempi di codice in questo articolo potrebbero richiedere direttive aggiuntive using
.
Creare un oggetto client
Per connettere un'app all'archiviazione BLOB, creare un'istanza di BlobServiceClient. Nell'esempio seguente viene illustrato come creare un oggetto client usando DefaultAzureCredential
per l'autorizzazione:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
È anche possibile registrare un client del servizio per l'inserimento delle dipendenze in un'app .NET. Per altre informazioni sulla creazione e la gestione di oggetti client, vedere Creare e gestire oggetti client che interagiscono con le risorse dati.
Autorizzazione
Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per eliminare o ripristinare un contenitore. Per l'autorizzazione con Microsoft Entra ID (scelta consigliata), è necessario il ruolo predefinito Controllo degli accessi in base al ruolo di Azure Collaboratore ai dati dei BLOB di archiviazione o versione successiva. Per altre informazioni, vedere il materiale sussidiario sull'autorizzazione per l'eliminazione di contenitori (API REST) e il ripristino del contenitore (API REST).
Eliminare un contenitore
Per eliminare un contenitore in .NET, usare uno dei metodi seguenti:
I metodi Delete e DeleteAsync generano un'eccezione se il contenitore non esiste.
I metodi DeleteIfExists e DeleteIfExistsAsync restituiscono un valore booleano che indica se il contenitore è stato eliminato. Se il contenitore specificato non esiste, questi metodi restituiscono False per indicare che il contenitore non è stato eliminato.
Dopo aver eliminato un contenitore, non è possibile creare un contenitore con lo stesso nome per almeno 30 secondi. Il tentativo di creare un contenitore con lo stesso nome avrà esito negativo con codice di errore HTTP 409 (Conflitto). Qualsiasi altra operazione sul contenitore o sui BLOB in esso contenuti avrà esito negativo con codice di errore HTTP 404 (Non trovato).
L'esempio seguente elimina il contenitore specificato e gestisce l'eccezione se il contenitore non esiste:
//-------------------------------------------------
// 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();
}
}
L'esempio seguente illustra come eliminare tutti i contenitori che iniziano con un prefisso specificato.
//-------------------------------------------------
// 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;
}
}
Ripristinare un contenitore eliminato
Quando per un account di archiviazione è abilitata l'eliminazione temporanea dei contenitori, è possibile recuperare un contenitore eliminato e il relativo contenuto entro un periodo di conservazione specificato. È possibile ripristinare un contenitore eliminato predefinito chiamando uno dei metodi seguenti della classe BlobServiceClient.
L'esempio seguente trova un contenitore eliminato, ottiene l'ID versione del contenitore e quindi passa l'ID al metodo UndeleteBlobContainerAsync per ripristinare il contenitore.
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);
}
}
}
}
Risorse
Per altre informazioni sull'eliminazione di un contenitore usando la libreria client di Archiviazione BLOB di Azure per .NET, vedere le risorse seguenti.
Operazioni dell'API REST
Azure SDK per .NET contiene librerie basate sull'API REST di Azure che consentono di interagire con le operazioni dell'API REST tramite paradigmi .NET noti. I metodi della libreria client per eliminare o ripristinare un contenitore usano le operazioni API REST seguenti:
- Delete Container (API REST)
- Restore Container (API REST)
Risorse per la libreria client
- Documentazione di riferimento della libreria client
- Codice sorgente della libreria client
- Pacchetto (NuGet)
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per