Cloud Services Web ロール内で実行されている Azure ストレージ アカウントから読み取ろうとすると、スローされる
[StorageClientException: One of the request inputs is out of range.]
Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() +96
Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() +271
Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.SetPermissions(BlobContainerPermissions permissions, BlobRequestOptions options) +229
この件に関して私が見つけたすべての記事は、問題がストレージ接続文字列または BLOB コンテナー名の大文字であることを示唆しています。
コードは次のとおりです。
var cloudStorageAccount = CloudStorageAccount.FromConfigurationSetting(StorageConnectionStringConfigKey);
var blobClient = cloudStorageAccount.CreateCloudBlobClient();
var blobContainerName = "containername";
var blobContainer = blobClient.GetContainerReference(blobContainerName.ToLower(CultureInfo.InvariantCulture));
var permissions = new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Container };
blobContainer.SetPermissions(permissions);
var blobName = "SomeXmlFile.xml";
var blob = blobContainer.GetBlobReference(blobName);
var text = blob.DownloadText();
例外は blobContainer.SetPermissions でスローされます。
ライブ Web ロールからではなく、コンピューティング エミュレーターから同じコードと同じ資格情報を使用して同じコンテナーにアクセスすると、すべて正常に動作します。また、Neudesic の Azure Storage Explorer から BLOB コンテナーを問題なく読み取ることができます。
関連する可能性があります: 私のローカル環境には、2012 年 6 月の Azure SDK (バージョン 1.7) しかありません。また、最近アプリケーションを 1.0.8 から Postmark 1.0.14 にアップグレードし、その依存関係である Newtownsoft Json.NET (4.0 から 4.5.8 に) もアップグレードしました。
接続をテストするためだけに、パッケージを使用せずにアプリケーションを 1 行ずつビルドしてから、パッケージを追加します。
すべてのクレジットと識別子文字列が正しく小文字であることが絶対に確実であるときに、これを見た人はいますか?