Blob容器创buildexception

每次我尝试为blob创build一个容器时,都会收到一个exception

使用下面的代码


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: 

你们知道我做错了什么?

我的猜测是你使用的容器名称违反了命名规则。 检查http://msdn.microsoft.com/en-us/library/dd135715.aspx

我有同样的例外。 解决scheme:将容器名称更改为小写。

除了:

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

工作正常:

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

在我的情况下,模拟器已经过时了。 停止模拟器并安装最新的SDK后,问题就消失了。

您可以从这里获取最新的SDK: https : //azure.microsoft.com/en-us/downloads/

这通常是由带有大写字母的容器名称引起的,或者是您的服务帐户名称(AccountName =在configuration文件中)包含大写字母。 这是糟糕的。 有人可以告诉微软,这是101反模式。 Azure控制台环境允许您input一个帐户名称,例如“LameDuck”,但是您必须连接AccountName = lameduck,否则它会在您的脸上显示无法理解的错误消息。 当您在Azure控制台中inputLameDuck时,如果您正好使用此名称,它甚至不会警告您将会炸毁您的脸部。 这是浪费我们的时间,因为我们至less期望一致的反模式 – 太多期望? 如果您不允许使用大写连接,则不要在Azure控制台中使用大写名称创build帐户! 但是你最近应该能够处理大写字母。 Jeees!

我得到了完全相同的错误。 这是由于我的连接string中的帐户名称是用大写字母写的。

我甚至无法通过Visual Studio中的Server Explorer进行连接。

将名称更改为小写字母后 ,效果很好。

我也花了数小时的时间来解决这个问题 – 我认为理查德有权咆哮!

有很多关于不具有大写字母的容器名称等。但是,我发现blob参考名称也必须符合。 其实我有三次违规:

  1. 像理查德一样,我在configuration文件中的帐户名中input了大写字母。
  2. 我在容器名称中有大写字母。
  3. 我在blob引用名称中有一个空格。

如果错误信息是无意义的,这些复合错误是非常难以追查的。 问题是错误被抛出在完全相同的代码行,即使原因可能不同。

根据你的代码片段,它看起来像你在初始化storageAccInfo之前调用CreateBlobClient()。 我想这会给你带来麻烦。

我的问题是模拟器实际上并没有启动,我没有意识到这一点。 http://mhuensch.azurewebsites.net/azure-storage-wont-start/

它没有启动,因为模拟器使用端口10000,并且与该端口有冲突。

Blob引用只能有小写字母 – 也许你正在遇到这个? 我曾是。