Подтвердить что ты не робот

Исключение создания контейнера Blob

Я получаю исключение каждый раз, когда я пытаюсь создать контейнер для blob

используя следующий код


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: 

Вы, ребята, знаете, что я делаю неправильно?

4b9b3361

Ответ 2

У меня такое же исключение. Решение: изменить имена контейнеров в нижнем регистре.

За исключением:

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

Прекрасно работает:

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

Ответ 3

В моем случае эмулятор устарел. После остановки эмулятора и установки последнего SDK проблема исчезла.

Вы можете получить последнюю версию SDK: https://azure.microsoft.com/en-us/downloads/

Ответ 4

Это часто вызвано либо именем контейнера с буквами в верхнем регистре, либо вашим именем учетной записи службы (AccountName = в файле конфигурации) содержит буквы верхнего регистра. Это так хромает. Может кто-нибудь сказать Microsoft, что это 101 анти-шаблон. Консольная среда Azure позволяет вам ввести имя учетной записи "LameDuck", например, но вам нужно подключиться к AccountName = lameduck, или она взорвалась в вашем лице с непонятным сообщением об ошибке. Когда вы вводите LameDuck в консоли Azure, он даже не предупреждает вас, что он взорвется вам, если вы используете именно это имя. Это пустая трата нашего времени, поскольку мы, по крайней мере, ожидаем последовательных анти-шаблонов - слишком многого ожидать? Если вы не разрешаете соединения с верхним регистром, не разрешайте создавать учетные записи с именами верхнего регистра на консоли Azure! Но вы должны иметь возможность обрабатывать верхний регистр в эти дни. Jeees!

Ответ 5

Я получил ту же ошибку. Это связано с тем, что имя моей учетной записи в строке соединения было написано с буквами в верхнем регистре.

Я даже не мог подключиться через Server Explorer в Visual Studio.

После изменения имени в в нижнем регистре он работал отлично.

Ответ 6

Я тоже потратил часы, пытаясь разобраться в этой проблеме - я думаю, Ричард имеет право на его разглагольствование!

Существует много сообщений о имени для контейнеров, не имеющих символов верхнего регистра, и т.д. Однако я обнаружил, что имя ссылки blob также должно соответствовать. Фактически, у меня было три нарушения:

  • Как и у Ричарда, у меня были буквы верхнего регистра в имени моей учетной записи в файле конфигурации.
  • У меня в имени контейнера были буквы верхнего регистра.
  • У меня было место в имени ссылки blob.

Эти сложные ошибки очень трудно отследить, если сообщения об ошибках бессмысленны. Проблема в том, что ошибка генерируется точно в той же строке кода, хотя причины могут быть разными.

Ответ 7

Основываясь на фрагменте кода, похоже, что вы вызываете CreateBlobClient() перед инициализацией storageAccInfo. Я бы предположил, что это вызовет у вас проблемы.

Ответ 8

Моя проблема заключалась в том, что эмулятор фактически не запускался, и я этого не осознавал. http://mhuensch.azurewebsites.net/azure-storage-wont-start/

Это не началось, потому что эмулятор использует порт 10000, и возник конфликт с этим портом.

Ответ 9

Ссылки Blob могут содержать только символы нижнего регистра - возможно, вы сталкиваетесь с этим? Я был.