es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Marco de trabajo .Net: Subir Blob utilizando SAS

Pregunté una pregunta similar en este enlace, pero era para .Net Core. Desafortunadamente, tengo que usar .net framework para hacer el mismo trabajo ya que ADF no admite componentes personalizados en .Net Core.

Introducción
Estoy intentando cargar un archivo en Azure Blob usando el SDK de .net framework. El código está abajo:

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace UploadBlobAndUpdateMetadata
{
class Program
{
static void Main(string[] args)
{
try {
string storageAccntConnection = "https://*****.blob.core.windows.net/****;SharedAccessSignature=sp=racwdl&st=2021-12-08T01:14:01Z&se=2022-02-28T09:14:01Z&spr=https&sv=2020-08-04&sr=c&sig=****";
string blobFilePath = @"*****\log.20210801.003851.txt";
string blobContainer = "dropoff-commissionstatements";
var cloudBlockBlob = new CloudBlockBlob(new Uri(storageAccntConnection));
cloudBlockBlob.UploadFromFile(blobFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.InnerException.Message);
}
Console.Write("Archivo cargado en el contenedor techblobcontainer");
Console.ReadLine();
}
}
}

Error
enter image description here

Si cambio la cadena de conexión a la siguiente, obtengo un error 403 Forbidden:

https://.blob.core.windows.net/?sp=racwdl&st=2021-12-08T01:14:01Z&se=2022-02-28T09:14:01Z&spr=https&sv=2020-08-04&sr=c&sig=

enter image description here

El problema no puede estar en la cadena de conexión, ya que pude lograr lo mismo con .Net Core.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Al observar el mensaje de error, parece que el token SAS utilizado en la cadena de conexión no es válido para la operación especificada. Específicamente, parece que el token carece de los permisos requeridos (es decir, “sp=racwdl”).

    Para solucionar esto, debes actualizar el token SAS en tu cadena de conexión para incluir los permisos requeridos. A continuación, se muestra un ejemplo de cómo se vería la cadena de conexión actualizada:

    https://****.blob.core.windows.net/***?sp=rwac&st=2021-12-08T01:14:01Z&se=2022-02-28T09:14:01Z&spr=https&sv=2020-08-04&sr=c&sig=*****
    

    Ten en cuenta que he cambiado el parámetro “sp” para incluir los permisos requeridos (es decir, lectura, escritura, adición y creación). Debes actualizar este valor según tus requisitos específicos.

    Una vez que hayas actualizado la cadena de conexión, intenta ejecutar tu código nuevamente y verifica si se resuelve el problema.

Comments are closed.