[Windows] Blobコンテナ作成例外


Answers

私は同じ例外があります。 解決策:コンテナ名を小文字に変更します。

例外:

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

正常に動作します:

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

ブロブ用のコンテナを作成しようとするたびに例外が発生する

次のコードを使用して

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: 

あなたは私が間違っていることは何ですか?




私もこの問題を解決するのに何時間も費やしてきました - 私はリチャードが彼のぞっとする権利を得られると思います!

大文字の文字を持たないコンテナの名前については、多くの記事があります。しかし、私はBLOB参照名も遵守しなければならないことを発見しました。 実際、私は3つの違反を犯しました:

  1. リチャードと同じように、設定ファイルのアカウント名に大文字がありました。
  2. 私はコンテナ名に大文字を入れました。
  3. 私はBLOB参照名にスペースがありました。

これらの複合エラーは、エラーメッセージが無意味な場合には追跡が非常に困難です。 問題は、原因が異なる可能性があるにもかかわらず、エラーがコードのまったく同じ行にスローされることです。




これは、大文字の大文字のコンテナ名、またはサービスアカウント名(設定ファイルのAccountName =)に大文字が含まれていることが原因です。 これはまあまあです。 誰かが、これが101の反パターンであるとMicrosoftに伝えることができますか? Azureコンソール環境では、アカウント名 "LameDuck"を入力することができますが、AccountName = lameduckと接続する必要があります。そうでないと、エラーメッセージが表示されて顔が爆発します。 AzureコンソールにLameDuckを入力すると、この名前を正確に使用すると、あなたの顔に爆発する旨警告することさえありません。 これは、少なくとも一貫した反パターンを期待しているので、私たちの時間の無駄です。 大文字との接続を許可しない場合は、Azureコンソールに大文字のアカウントを作成しないでください! しかし、あなたは最近、大文字を扱うことができるはずです。 ジー!




私の問題は、エミュレータが実際に起動していないことであり、私はそのことを認識していないということでした。 http://mhuensch.azurewebsites.net/azure-storage-wont-start/

エミュレータがポート10000を使用していて、そのポートと競合していたため、起動していませんでした。