Blob创造容器异常
-
26-09-2019 - |
题
我得到一个异常每次我尝试创建一个容器对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参考的名称也必须遵守。事实上,我有三个违法行为:
- 就像理查德我不得不上情况的信件在我的帐户名称在配置文件。
- 我已经上写字母的容器名称。
- 我有一个空间blob参考的名称。
这些化合物的错误是非常困难追踪,如果错误消息是毫无意义的。问题是,这一错误是在完全相同行代码,尽管原因可能是不同的。
根据您的代码段,它看起来像你打电话CreateBlobClient()之前初始化storageAccInfo。我想这将导致你的麻烦。
我的问题是,该模拟器实际上并没有启动起来,我还没有意识到。 http://mhuensch.azurewebsites.net/azure-storage-wont-start/一>
这不是开始因为模拟器使用端口10000和有与该端口的冲突。
BLOB引用只能有小写字符 - 也许你正在运行到这一点?我
在我的情况,我发现存储模拟器应该更新,我意识到有关捕获StorageException
异常,并检查其中有RequestInformation
特性,反过来,另一个字符串属性命名HttpStatusMessage
。该消息表示:
此请求的REST版本不被此版本存储模拟器的支持。请升级存储模拟器到最新版本。请参阅以下网址了解更多信息: http://go.microsoft.com/fwlink/ ?LINKID = 392237