每次尝试为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:
你们知道我做错了什么吗?
答案 0 :(得分:113)
我的猜测是您使用的容器名称违反了命名规则。检查http://msdn.microsoft.com/en-us/library/dd135715.aspx。
答案 1 :(得分:3)
就我而言,模拟器已经过时了。停止模拟器并安装最新的SDK后,问题就消失了。
您可以从此处获取最新的SDK:https://azure.microsoft.com/en-us/downloads/
答案 2 :(得分:2)
这通常是由包含大写字母的容器名称或您的服务帐户名称(AccountName =在配置文件中)包含大写字母引起的。这太蹩脚了。有人可以告诉微软这些是101种反模式。 Azure控制台环境允许您输入帐户名称,例如“LameDuck”,但您必须使用AccountName = lameduck进行连接,否则会因为无法理解的错误消息而在您面前爆炸。当您在Azure控制台中输入LameDuck时,如果您使用此名称,它甚至不会警告您它会在您的脸上爆炸。这是浪费我们的时间,因为我们至少期待一致的反模式 - 期望太多了?如果您不允许使用大写连接,则不要在Azure控制台中使用大写名称创建帐户!但是这些天你应该能够处理大写。 Jeees!
答案 3 :(得分:2)
我得到了完全相同的错误。这是因为我在连接字符串中的帐户名称是用大写字母写的。
我甚至无法通过Visual Studio中的服务器资源管理器连接。
将名称更改为小写后,效果非常好。
答案 4 :(得分:2)
我也花了好几个小时试图解决这个问题 - 我认为理查德有权受到他的咆哮!
关于没有大写字符等的容器的名称有很多帖子。但是,我发现blob引用名称也必须符合。事实上,我有三次违规行为:
如果错误消息毫无意义,则很难找到这些复合错误。问题是错误是在完全相同的代码行引发的,即使原因可能不同。
答案 5 :(得分:0)
根据您的代码段,在初始化storageAccInfo之前,您似乎正在调用CreateBlobClient()。我想这会给你带来麻烦。
答案 6 :(得分:0)
我的问题是模拟器实际上没有启动,我没有意识到这一点。 http://mhuensch.azurewebsites.net/azure-storage-wont-start/
它没有启动,因为模拟器使用端口10000并且与该端口存在冲突。
答案 7 :(得分:0)
Blob引用只能包含小写字符 - 也许你遇到了这个问题?我是。
答案 8 :(得分:0)
在我的情况下,我发现应该更新存储模拟器,并且我意识到捕获StorageException
异常并检查RequestInformation
属性,而该属性又具有另一个名为{{1的字符串属性}}。那条消息说:
此版本的存储模拟器不支持此请求的REST版本。请将存储模拟器升级到最新版本。有关详细信息,请参阅以下网址:http://go.microsoft.com/fwlink/?LinkId=392237