我得到一个异常每次我尝试创建一个容器对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: 

你们这些家伙,什么是它的,我做错了什么?

有帮助吗?

解决方案

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

其他提示

我已经得到了同样的异常。该解决方案:改变容器名称为小写

使用例外:

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

正常工作:

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

在我的情况下,仿真器是过时。停止仿真器和安装最新的SDK后,问题就走开了。

https://azure.microsoft.com/:

您可以从这里得到最新的SDK EN-US /下载/

这通常是由任一容器名称在它大写字母,或服务的帐户名称(帐户名=在配置文件中)包含大写字母引起的。这可真差劲。有谁能告诉微软,这些都是101反模式。 Azure的控制台环境允许您例如输入帐户名,“LameDuck”,但你必须与帐户名= lameduck连接,或者在你的脸上有一个难以理解的错误消息炸毁。当您在Azure中控制台输入LameDuck,它甚至不提醒你,它会炸掉你的脸,如果你使用的正是这个名字。这是我们在浪费时间,因为我们至少预期一致的反模式 - 太大的奢望?如果不允许用大写的连接,则不允许账户与在Azure的控制台大写名称创建!但是,你应该能够处理大写的这些日子。 Jeees!

我得到完全相同的错误。在ConnectionString与大写字母书写这是由于我的帐户名称。

我甚至不能在Visual Studio连接,然后通过服务器资源管理器。

改变名称后的小写它完美地工作。

我也花了几个小时试图理清这个问题-我觉得理查德的标题是他夸大其词!

有许多员额有关的名称容器没有上写字母,等等。然而,我们发现,blob参考的名称也必须遵守。事实上,我有三个违法行为:

  1. 就像理查德我不得不上情况的信件在我的帐户名称在配置文件。
  2. 我已经上写字母的容器名称。
  3. 我有一个空间blob参考的名称。

这些化合物的错误是非常困难追踪,如果错误消息是毫无意义的。问题是,这一错误是在完全相同行代码,尽管原因可能是不同的。

根据您的代码段,它看起来像你打电话CreateBlobClient()之前初始化storageAccInfo。我想这将导致你的麻烦。

BLOB引用只能有小写字符 - 也许你正在运行到这一点?我

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top