41 votes

Exception de création de conteneur blob

Je reçois une exception chaque fois que j'essaie de créer un conteneur pour le blob

en utilisant le code suivant


 CloudStorageAccount storageAccInfo;
CloudBlobClient blobStorageType;
CloudBlobContainer ContBlob;

blobStorageType = storageAccInfo.CreateCloudBlobClient();

//then I initialize storageAccInfo

ContBlob = blobStorageType.GetContainerReference(containerName);
//everything fine till here ; next line creates an exception

ContBlob.CreateIfNotExist();
 

 Microsoft.WindowsAzure.StorageClient.StorageClientException was unhandled
  Message="One of the request inputs is out of range."
  Source="Microsoft.WindowsAzure.StorageClient"
  StackTrace:
       at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
       at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
       at Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImplWithRetry[T](Func`2 impl, RetryPolicy policy)
       at Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist(BlobRequestOptions options)
       at Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist()
       at WebRole1.BlobFun..ctor() in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\WebRole1\BlobFun.cs:line 58
       at WebRole1.BlobFun.calling1() in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\WebRole1\BlobFun.cs:line 29
       at AzureBlobTester.Program.Main(String[] args) in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\AzureBlobTester\Program.cs:line 19
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Net.WebException
       Message="The remote server returned an error: (400) Bad Request."
       Source="System"
       StackTrace:
            at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
            at Microsoft.WindowsAzure.StorageClient.EventHelper.ProcessWebResponse(WebRequest req, IAsyncResult asyncResult, EventHandler`1 handler, Object sender)
       InnerException: 
 

Savez-vous ce que je fais mal?

115voto

smarx Points 18006

Mon hypothèse est que le nom du conteneur que vous utilisez viole les règles de nommage. Consultez http://msdn.microsoft.com/en-us/library/dd135715.aspx .

14voto

unconnected Points 111

J'ai la même exception. La solution: changer les noms de conteneurs en minuscules.

Avec exception:

 CloudBlobContainer container = blobClient.GetContainerReference("Script");
container.CreateIfNotExist();
 

Fonctionne bien:

 CloudBlobContainer container = blobClient.GetContainerReference("script");
container.CreateIfNotExist();
 

2voto

Jonas Stensved Points 2803

J'ai exactement la même erreur. C'était dû à mon nom de compte dans la chaîne de connexion qui était écrite avec des lettres majuscules .

Je ne pouvais même pas me connecter via Server Explorer dans Visual Studio.

Après avoir changé le nom en minuscule, cela a parfaitement fonctionné.

2voto

Simon Poulton Points 21

Moi aussi, j'ai passé des heures à essayer de régler ce problème - je pense que Richard a le droit à son coup de gueule!

Il y a beaucoup de posts sur le nom pour les conteneurs de ne pas avoir de caractères majuscules, etc. Cependant, j'ai trouvé que le blob nom de référence doivent également se conformer. En fait, j'ai eu trois infractions:

  1. À l'instar de Richard j'ai eu des majuscules dans le nom de mon compte dans le fichier de configuration.
  2. J'ai eu des majuscules dans le nom du conteneur.
  3. J'ai eu un espace dans le blob nom de référence.

Ces composés erreurs sont très difficiles à repérer si les messages d'erreur sont vides de sens. Le problème est que l'erreur est levée à exactement la même ligne de code, même si les causes peuvent être différentes.

2voto

Richard Points 11

Cela est souvent causé par un conteneur nom avec des majuscules, ou votre nom de compte de service (Nomcompte= dans le fichier de configuration contient des lettres majuscules et minuscules. C'est TELLEMENT boiteux. Quelqu'un peut-il dire à Microsoft que ces 101 anti-modèles. L'Azur de l'environnement de la console vous permet d'entrer un nom de compte, "LameDuck" par exemple, mais vous devez vous connecter avec le nom de compte=lameduck, ou il souffle sur votre visage avec un inintelligible message d'erreur. Lorsque vous entrez LameDuck dans l'Azur de la console, il n'a même pas de vous avertir qu'il va exploser dans votre visage si vous utilisez précisément ce nom. C'est un gaspillage de NOTRE temps, car nous sommes au moins d'attendre cohérente des anti-modèles -- trop à quoi s'attendre? Si vous ne voulez pas autoriser les connexions avec les majuscules, puis ne permettent pas de comptes créés par une majuscule les noms, dans l'Azur de la console! Mais vous devriez être capable de gérer les majuscules de ces jours. Jeees!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X