Condividi tramite


Eliminare un account di archiviazione

 

Il Delete Storage Account operazione asincrona Elimina l'account di archiviazione specificato.

Richiesta

Il Delete Storage Account richiesta può essere specificata come indicato di seguito. Sostituire <subscription-id> con l'ID sottoscrizione, e <service-name> con il nome dell'account di archiviazione.

Metodo

URI della richiesta

ELIMINARE

https://management.core.windows.net/<subscription-id>/services/storageservices/<service-name>

È necessario assicurarsi che la richiesta effettuata al servizio di gestione sia sicura. Per ulteriori informazioni, vedere l'autenticazione delle richieste di Gestione servizio.

Parametri URI

Nessuno.

Intestazioni della richiesta

Nella tabella seguente descrive le intestazioni di richiesta.

Intestazione della richiesta

Descrizione

x-ms-version

Obbligatorio. Specifica la versione dell'operazione da usare per questa richiesta. Il valore di questa intestazione deve essere impostato su 2011-06-01 o versione successiva. Per ulteriori informazioni sulle intestazioni di controllo delle versioni, vedere il controllo delle versioni di Service Management.

Corpo della richiesta

Nessuno.

Risposta

La risposta include un codice di stato HTTP, un set di intestazioni di risposta e un corpo della risposta.

Codice di stato

Un'operazione completata correttamente restituisce il codice di stato 200 (OK). Per informazioni sui codici di stato, vedere stato di gestione del servizio e codici di errore.

Intestazioni di risposta

La risposta per questa operazione include le intestazioni seguenti. La risposta può inoltre includere intestazioni HTTP standard aggiuntive. Rispettare tutte le intestazioni standard di specifica del protocollo HTTP/1.1https://go.microsoft.com/fwlink/?linkid=150478.

Intestazione della risposta

Descrizione

x-ms-request-id

Un valore che identifica in modo univoco una richiesta effettuata nel servizio di gestione. Per un'operazione asincrona, è possibile chiamare Ottenere lo stato di operazione con il valore dell'intestazione per determinare se l'operazione è stata completata, non è riuscita o è ancora in corso.

Corpo della risposta

Nessuno.

Sezione Osservazioni

Utilizzare il Delete Storage Account operazione di eliminazione di un account di archiviazione in base al nome. Dati archiviati in un account di archiviazione eliminato non possono essere recuperati e nomi di account di archiviazione che sono stati eliminati possono essere adottati da altri utenti.

Prima di eliminare un account di archiviazione, è innanzitutto necessario eliminare tutte le immagini del sistema operativo, immagini di macchine Virtuali e dischi che si trovano nell'account. Operazioni asincrone vengono utilizzate per eliminare gli elementi da un account di archiviazione. È possibile utilizzare il Ottenere lo stato di operazione operazione per assicurarsi che le operazioni vengano completate prima di provare a eliminare l'account di archiviazione. Potrebbero occorrere fino a 15 minuti per tutte le operazioni completare prima di poter eliminare l'account di archiviazione.

Esempio

Il programma di esempio seguente accetta l'identificatore di sottoscrizione, un'identificazione personale del certificato di gestione associato, la versione di operazione e un nome di account di archiviazione e chiamate di Delete Storage Account operazione per rimuovere l'account di archiviazione denominato. Inizializzare il Version costante con una stringa di intestazione di versione, SubscriptionId con l'identificatore GUID per la sottoscrizione, Thumbprint e il valore di identificazione personale certificato di gestione, e ServiceName con il nome dell'account di archiviazione da eliminare per eseguire il codice di esempio.

using System;
using System.Collections.Generic;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Xml;
using System.Xml.Linq;

public class Program
{
    // Set these constants with your values to run the sample.
    private const string Version = "2011-10-01";
    private const string Thumbprint = "management-certificate-thumbprint";
    private const string SubscriptionId = "subscription-id-guid";
    private const string ServiceName = "storage-account-name";

    /// <summary>
    /// Gets or sets the certificate that matches the Thumbprint value.
    /// </summary>
    private static X509Certificate2 Certificate { get; set; }

    static void Main(string[] args)
    {
        try
        {
            Certificate = GetCertificate(Thumbprint);

            DeleteStorageAccount(SubscriptionId, ServiceName);
            Console.WriteLine("Storage Account {0} deleted.", ServiceName);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception caught in Main:");
            Console.WriteLine(ex.Message);
        }

        Console.Write("Press any key to continue:");
        Console.ReadKey();
    }

    /// <summary>
    /// Calls the Delete Storage Account operation in the Service Management
    /// REST API for the specified subscription and storage account name.
    /// Throws an ApplicationException on status code results other than OK.
    /// </summary>
    /// <param name="subscriptionId">The subscription identifier.</param>
    /// <param name="serviceName">The name of the storage account to delete.</param>
    private static void DeleteStorageAccount(
        string subscriptionId,
        string serviceName)
    {
        string uriFormat = "https://management.core.windows.net/{0}/services/storageservices/{1}";
        Uri uri = new Uri(String.Format(uriFormat, subscriptionId, serviceName));

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
        request.Method = "DELETE";
        request.Headers.Add("x-ms-version", Version);
        request.ClientCertificates.Add(Certificate);
        request.ContentType = "application/xml";

        XDocument responseBody = null;
        HttpStatusCode statusCode = HttpStatusCode.Unused;
        HttpWebResponse response;
        try
        {
            response = (HttpWebResponse)request.GetResponse();
        }
        catch (WebException ex)
        {
            // GetResponse throws a WebException for 4XX and 5XX status codes
            response = (HttpWebResponse)ex.Response;
        }

        try
        {
            statusCode = response.StatusCode;
            if (response.ContentLength > 0)
            {
                using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
                {
                    responseBody = XDocument.Load(reader);
                }
            }
        }
        finally
        {
            response.Close();
        }

        if (!statusCode.Equals(HttpStatusCode.OK))
        {
            throw new ApplicationException(string.Format(
                "Call to {0} returned an error:{1}Status Code: {2} ({3}):{1}{4}",
                uri.ToString(),
                Environment.NewLine,
                (int)statusCode,
                statusCode,
                responseBody.ToString(SaveOptions.OmitDuplicateNamespaces)));
        }

        return;
    }

    /// <summary>
    /// Gets the certificate matching the thumbprint from the local store.
    /// Throws an ArgumentException if a matching certificate is not found.
    /// </summary>
    /// <param name="thumbprint">The thumbprint of the certificate to find.</param>
    /// <returns>The certificate with the specified thumbprint.</returns>
    private static X509Certificate2 GetCertificate(string thumbprint)
    {
        List<StoreLocation> locations = new List<StoreLocation> 
        { 
            StoreLocation.CurrentUser, 
            StoreLocation.LocalMachine 
        };

        foreach (var location in locations)
        {
            X509Store store = new X509Store("My", location);
            try
            {
                store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
                X509Certificate2Collection certificates = store.Certificates.Find(
                    X509FindType.FindByThumbprint, thumbprint, false);
                if (certificates.Count == 1)
                {
                    return certificates[0];
                }
            }
            finally
            {
                store.Close();
            }
        }

        throw new ArgumentException(string.Format(
            "A Certificate with Thumbprint '{0}' could not be located.",
            thumbprint));
    }
}

Il programma di esempio genera risultati simili al seguente:

Storage Account myexamplestorage1 deleted.
Press any key to continue: