尝试从在云服务 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 存储资源管理器中读取 blob 容器也没有问题。
可能相关:我的本地环境只有 2012 年 6 月的 Azure SDK(版本 1.7)。此外,我最近将应用程序从 1.0.8 升级到 Postmark 1.0.14,以及它的依赖项 Newtownsoft Json.NET(从 4.0 升级到 4.5.8)。
我将逐行构建一个应用程序,没有包,只是为了测试连接,然后添加包。
有没有人在他们绝对确定所有凭据和标识符字符串都是正确的小写字母时见过这个?