web-dev-qa-db-ja.com

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: 

私が間違っているのは何ですか?

41
Egon

私の推測では、使用しているコンテナ名は命名規則に違反しています。チェック http://msdn.Microsoft.com/en-us/library/dd135715.aspx

113
user94559

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

例外を除いて:

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

正常に動作します:

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

私の場合、エミュレーターは古くなっていました。エミュレータを停止して最新のSDKをインストールすると、問題は解決しました。

最新のSDKはここから入手できます: https://Azure.Microsoft.com/en-us/downloads/

3
Talon

これは多くの場合、大文字が含まれているコンテナー名、またはサービスアカウント名(構成ファイルのAccountName =)に大文字が含まれていることが原因で発生します。これはSO lame。誰かがMicrosoftにこれらが101のアンチパターンであると言うことができます。Azureコンソール環境では、たとえば「LameDuck」などのアカウント名を入力できますが、接続する必要があります。 AccountName = lameduck、または理解できないエラーメッセージで顔が爆破します。AzureコンソールでLameDuckと入力しても、この名前を正確に使用すると、顔が爆破することを警告することすらありません。これは少なくとも一貫したアンチパターンを期待しているので、時間の無駄です-期待しすぎますか?大文字での接続を許可しない場合は、Azureコンソールで大文字の名前でアカウントを作成することを許可しないでください!しかし、最近は大文字を処理できるはずです。Jeees!

2
Richard

私もこの問題を解決するために何時間も費やしてきました-リチャードは彼の暴言を受ける資格があると思います!

大文字を持たないコンテナの名前などについては多くの投稿がありますが、blobの参照名も準拠している必要があることがわかりました。実際、私には3つの違反がありました。

  1. リチャードのように、設定ファイルのアカウント名に大文字が含まれていました。
  2. コンテナ名に大文字が含まれていました。
  3. ブロブ参照名にスペースがありました。

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

2
Simon Poulton

まったく同じエラーが発生しました。これは、接続文字列のアカウント名が大文字の文字で書かれているためです。

VisualStudioのサーバーエクスプローラーを介して接続することさえできませんでした。

名前を小文字に変更した後、完全に機能しました。

2
Jonas Stensved

私の場合、ストレージエミュレーターを更新する必要があることがわかり、StorageException例外をキャッチし、RequestInformationプロパティをチェックすることに気付きました。このプロパティにはHttpStatusMessage。そのメッセージは言った:

このリクエストのRESTバージョンは、このリリースのストレージエミュレータではサポートされていません。ストレージエミュレータを最新バージョンにアップグレードしてください。詳細については、次のURLを参照してください。 http ://go.Microsoft.com/fwlink/?LinkId = 392237

0
Eugenio Miró

BLOB参照には小文字のみを含めることができます-おそらくこれに遭遇していますか?私はそうだった。

0
Jorge Aguirre

コードスニペットに基づくと、storageAccInfoを初期化する前にCreateBlobClient()を呼び出しているようです。これはあなたに問題を引き起こすと思います。

0
David Makogon

私の問題は、エミュレーターが実際に起動しておらず、それを認識していなかったことです。 http://mhuensch.azurewebsites.net/Azure-storage-wont-start/

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