GOOGLE ADS

lunes, 18 de abril de 2022

C# Eliminar Azure Blob - Uri no válido

Estoy tratando de eliminar un contenedor de blobs de Azure de estructura de carpetas:

Mi cuenta de almacenamiento > Mi contenedor > Mi subcarpeta > Lista de blobs

Quiero eliminar la subcarpeta, incluidos todos los blobs que contiene. Mi subcarpeta > Lista de blobs

El Ur:

*********** blobUri:https://myapp.blob.core.windows.net/containerID/subFolderID

containerID y subfolderID son correctos, los he comprobado en Azure Portal.

Recibo este error al depurar. ¿Por qué mi Uri no es válido?

Exception thrown: 'Azure.RequestFailedException' in System.Private.CoreLib.dll
HTTP error code 400: InvalidUri
The requested URI does not represent any resource on the server.
RequestId:1af585de-1234-00yy-0ce1-50xxxx000000
Time:2022-04-15T15:56:47.0801054Z
Status: 400 (The requested URI does not represent any resource on the server.)
ErrorCode: InvalidUri

Mi clase DeleteBlobs

using Azure;
using Azure.Storage;
using Azure.Storage.Blobs;
using MyApp.Data;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
namespace MyApp.Areas.FunctionalLogic
{
public class DeleteBlobs
{
private readonly DBConnectionStringFactory _DBConnectionStringFactory = new();
public async Task<bool> DeleteAzureBlobAsync(string containerID, string subFolderID)
{
string connectionString = getConnectionString();
var blobUri = getBlobUri(containerID, subFolderID).ToString();
Debug.WriteLine("*********** blobUri:" + blobUri);
BlobServiceClient container = new BlobServiceClient(connectionString);
try
{
await container.DeleteBlobContainerAsync(blobUri);
}
catch (RequestFailedException e)
{
Debug.WriteLine("HTTP error code {0}: {1}", e.Status, e.ErrorCode);
Debug.WriteLine(e.Message);
}
return true;
}
public string getConnectionString()
{
string connecString = Environment.GetEnvironmentVariable("MY_CONNECTION_STRING");
return connecString;
}
public Uri getBlobUri(string containerName, string subFolderName)
{
Uri blobUri = new Uri("https://" + "myapp.blob.core.windows.net/" + containerName + "/" + subFolderName);
return blobUri;
}
}
}


Solución del problema

No puede, ya que las carpetas no existen realmente en el almacenamiento de blobs de Azure; simplemente se muestran como tales al usuario en función de los nombres de los blobs.

Para eliminar la "carpeta", elimine todos los blobs que contiene (y las subcarpetas).

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...