Eliminar cuenta de almacenamiento

 

El Delete Storage Account operación asincrónica elimina la cuenta de almacenamiento especificado.

Solicitud

El Delete Storage Account solicitud se puede especificar como sigue. Reemplace <subscription-id> con el identificador de suscripción, y <service-name> con el nombre de la cuenta de almacenamiento.

(Método)

URI de solicitud

ELIMINAR

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

Debe asegurarse de que la solicitud que se realiza en el servicio de administración es segura. Para obtener más información, consulte autenticar solicitudes de administración de servicio.

Parámetros de URI

Ninguno.

Encabezados de solicitud

La tabla siguiente describe los encabezados de solicitud.

Encabezado de solicitud

Descripción

x-ms-version

Requerido. Especifica la versión de la operación que se utilizará para esta solicitud. El valor de este encabezado debe establecerse en 2011-06-01 o superior. Para obtener más información acerca de los encabezados de control de versiones, consulte versiones del servicio de administración de.

Cuerpo de la solicitud

Ninguno.

Respuesta

La respuesta incluye un código de estado HTTP, un conjunto de encabezados de respuesta y un cuerpo de respuesta.

Código de estado

Una operación correcta devuelve el código de estado 200 (OK). Para obtener información acerca de los códigos de estado, consulte estado de administración del servicio y los códigos de Error.

Encabezados de respuesta

La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar cumplen la especificación del protocolo HTTP/1.1https://go.microsoft.com/fwlink/?linkid=150478.

Encabezado de respuesta

Descripción

x-ms-request-id

Un valor que identifica de forma única una solicitud realizada en el servicio de administración. Para una operación asincrónica, puede llamar a Obtener el estado de la operación con el valor del encabezado para determinar si la operación se completa, error o aún está en curso.

Cuerpo de respuesta

Ninguno.

Comentarios

Utilice la Delete Storage Account operación para eliminar una cuenta de almacenamiento por nombre. No se puede recuperar los datos almacenados en una cuenta de almacenamiento eliminada, y pueden adoptar los nombres de cuenta de almacenamiento que han sido eliminados por otros usuarios.

Antes de eliminar una cuenta de almacenamiento, primero debe eliminar todas las imágenes de sistema operativo, imágenes de máquina virtual y los discos que se encuentran en la cuenta. Las operaciones asincrónicas se utilizan para eliminar artefactos de una cuenta de almacenamiento. Puede usar el Obtener el estado de la operación operación para asegurarse de que las operaciones ha terminado antes de intentar eliminar la cuenta de almacenamiento. Pueden tardar hasta 15 minutos para todas las operaciones a que finalice antes de poder eliminar la cuenta de almacenamiento.

Ejemplo

El programa de ejemplo siguiente toma el identificador de suscripción, una huella digital de certificado de administración asociada, la versión de la operación y un nombre de cuenta de almacenamiento y las llamadas del Delete Storage Account operación para quitar la cuenta de almacenamiento. Inicializar el Version constante con una cadena de encabezado de versión SubscriptionId con el identificador GUID para la suscripción, Thumbprint con el valor de huella digital de certificado de administración, y ServiceName con el nombre de la cuenta de almacenamiento se eliminarán para ejecutar el código de ejemplo.

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

Este programa de ejemplo genera resultados similares a los siguientes:

Storage Account myexamplestorage1 deleted.
Press any key to continue: