web-dev-qa-db-fra.com

AzureStorage Blob Server n'a pas pu authentifier la demande. Assurez-vous que la valeur de l'en-tête d'autorisation est correctement formée, y compris la signature

J'essaie de télécharger une image dans Windows Azure Blob et j'obtiens l'erreur suivante que je ne peux pas gérer.

Le serveur n'a pas pu authentifier la demande. Assurez-vous que la valeur de l'en-tête d'autorisation est correctement formée, y compris la signature.

L'erreur se produit lorsque j'essaie de créer un conteneur.

   container.CreateIfNotExists()

Voici mon code

try
{
    Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

    // Retrieve a reference to a container. 
    CloudBlobContainer container = blobClient.GetContainerReference("samples");

    // Create the container if it doesn't already exist.
    // here is the error
    if (container.CreateIfNotExists())
    {
        container.SetPermissions(
            new BlobContainerPermissions
            {
                PublicAccess = BlobContainerPublicAccessType.Blob
            });
    }

    CloudBlockBlob blockBlob = container.GetBlockBlobReference("Image1");
    using (var fileStream = System.IO.File.OpenRead(@"Path"))
    {
        blockBlob.UploadFromStream(fileStream);
    }
}
catch (StorageException ex1)
{
    throw ex1;
}

J'ai essayé beaucoup d'options dans mon code mais j'obtiens toujours l'erreur.

Quelqu'un peut-il m'aider? Merci.

17
Fábio Henrique

Le temps de mon PC était de 1 heure, comme suggéré par d'autres dans les commentaires. La corriger a résolu le problème.

11
Ashton

dans mon cas, c'est en fait la signature d'accès partagé (SAS) qui a expiré. la mise à jour (en fait une nouvelle) de la signature d'accès partagé dans portal.Azure.com en ajoutant un an (ou plus) pour la date de fin dans le futur. Et tous les problèmes résolus.

3
Ewald Bos

Dans mon cas, je passais une chaîne de connexion de stockage avec une signature d'accès comme argument à l'application console. '%' dans la ligne de commande est un caractère spécial 'paramètres de ligne de commande'. '%' apparaît dans la signature d'accès (SAS). Vous devez échapper au pourcentage%, le doubler %%.

2
user2878837

J'ai reçu ce message lorsque j'essayais d'accéder au stockage BLOB via REST API Endpoint.

Vous trouverez ci-dessous la réponse que j'ai reçue lors de l'opération de conteneur de liste invoquée avec l'en-tête Authorization

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>AuthenticationFailed</Code>
    <Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:096c6d73-f01e-0054-6816-e8eaed000000
Time:2019-03-31T23:08:43.6593937Z</Message>
    <AuthenticationErrorDetail>Authentication scheme Bearer is not supported in this version.</AuthenticationErrorDetail>
</Error>

la solution consistait à inclure l'en-tête ci-dessous

x-ms-version: 2017-11-09
1
user2243747

Vérifiez le fuseau horaire de votre ordinateur ou de votre téléphone mobile.

0

J'utilise .NET SDK pour le téléchargement de fichiers blob Azure avec des métadonnées. J'ai reçu une erreur lors du téléchargement de fichiers dans le stockage Azure Blob avec des métadonnées, l'erreur est "le serveur n'a pas pu authentifier la demande. Assurez-vous que la valeur de l'en-tête d'autorisation est correctement formée, y compris la signature." Mais ces erreurs n'étaient que quelques fichiers pas tous.

Problème ici Si vous avez des métadonnées pour le fichier, les métadonnées ne doivent pas contenir de caractères spéciaux (�) ni d'espace supplémentaire () au début de la valeur et à la fin de la valeur.

Si vous corrigez les valeurs des métadonnées, le fichier sera téléchargé avec succès.

0
Muni Chittem