Speicherkonto löschen

 

Veröffentlicht: Februar 2016

Die Delete Storage Account asynchroner Vorgang löscht das angegebene Speicherkonto.

Die Delete Storage Account -Anforderung kann wie folgt angegeben werden. Ersetzen Sie <subscription-id> durch Ihre Abonnement-ID und <service-name> mit dem Namen des Speicherkontos.

Methode

Anfrage-URI

LÖSCHEN

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

Sie müssen sicherstellen, dass die Anforderung, die an den Verwaltungsdienst besteht sicher ist. Weitere Informationen finden Sie unter Authentifizieren von Dienstverwaltungsanforderungen.

In der folgenden Tabelle werden die Anforderungsheader beschrieben.

Anforderungsheader

Beschreibung

x-ms-version

Erforderlich. Gibt die Version des Vorgangs, der für diese Anforderung verwendet. Der Wert dieses Headers muss festgelegt werden, um 2011-06-01 oder höher. Weitere Informationen zu versionsverwaltungsheadern finden Sie unter Dienstverwaltungs-Versionsverwaltung.

Die Antwort enthält einen HTTP-Statuscode, einen Satz von Antwortheadern und einen Antworttext.

Bei einem erfolgreicher Vorgang gibt den Statuscode 200 (OK) zurück. Informationen zu Statuscodes finden Sie unter Dienstverwaltungsstatus und Fehlercodes.

Die Antwort für diesen Vorgang umfasst die folgenden Header. Die Antwort kann außerdem weitere HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikationhttp://go.microsoft.com/fwlink/?linkid=150478.

Antwort-Header

Beschreibung

x-ms-request-id

Ein Wert, der eine für den Verwaltungsdienst ausgeführte Anforderung eindeutig identifiziert. Sie können für einen asynchronen Vorgang aufrufen Vorgangsstatus abrufen mit dem Wert des Headers zu bestimmen, ob der Vorgang abgeschlossen ist, ist fehlgeschlagen oder wird noch ausgeführt.

Verwenden der Delete Storage Account Vorgang an ein Speicherkonto nach Namen zu löschen. In einem gelöschten Speicherkonto gespeicherte Daten können nicht wiederhergestellt werden, und die Namen des Speicherkontos, die gelöscht wurden, können von anderen Benutzern übernommen werden.

Bevor Sie ein Speicherkonto löschen, müssen Sie zuerst löschen, alle Betriebssystem-Images, VM-Images und Festplatten, die im Konto befinden. Asynchrone Vorgänge werden verwendet, um Elemente aus einem Speicherkonto löschen. Sie können die Vorgangsstatus abrufen Vorgang, um sicherzustellen, dass die Vorgänge abgeschlossen sind, bevor Sie versuchen, das Speicherkonto löschen. Es dauert bis zu 15 Minuten für alle Vorgänge abgeschlossen sind, bevor das Speicherkonto, das gelöscht werden kann.

Das folgende Beispielprogramm nimmt die Abonnement-ID, einen zugeordneten verwaltungszertifikatfingerabdruck, die Vorgangsversion und einen speicherkontonamen und ruft die Delete Storage Account Vorgang das benannte Speicherkonto zu entfernen. Initialisieren der Version Konstante mit einer versionsheaderzeichenfolge SubscriptionId mit der GUID-Bezeichner für das Abonnement Thumbprint mit Ihr Verwaltungszertifikat-Fingerabdruckwert, und ServiceName mit dem Namen des Speicherkontos gelöscht werden, um den Beispielcode auszuführen.

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 { getset; }

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

Dieses Beispielprogramm generiert Ergebnisse ähnlich den folgenden:

Storage Account myexamplestorage1 deleted.
Press any key to continue:
Anzeigen: