Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Azure blob存储抛出StorageClientException:“;其中一个请求输入超出范围“;_.net_Azure_Azure Storage Blobs - Fatal编程技术网

.net Azure blob存储抛出StorageClientException:“;其中一个请求输入超出范围“;

.net Azure blob存储抛出StorageClientException:“;其中一个请求输入超出范围“;,.net,azure,azure-storage-blobs,.net,Azure,Azure Storage Blobs,试图从运行在云服务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.W

试图从运行在云服务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)

我将逐行构建一个应用程序,不带包,只是为了测试连接,然后添加包

以前有没有人看到过这一点,他们完全确定所有的cred和标识符字符串都是正确的小写?

哇,我真傻

问题是:我有两个设置:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="Cloud" ...>
  <WebRole name="WebRole" vmsize="Small">
    <ConfigurationSettings>
      <Setting name="MessagesConfigurationBlobName" />
      <Setting name="MessagesConfigurationBlobContainerName" />
    </ConfigurationSettings>
  </WebRole>
</ServiceDefinition>

以下是本地(仿真器)配置文件:

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration ...>
  <Role name="WebRole">
    <ConfigurationSettings>
      <Setting name="MessagesConfigurationBlobName" value="LocalMessageConfig.xml"/>
      <Setting name="MessagesConfigurationBlobContainerName" value="containername"/>
    </ConfigurationSettings>
  </Role >
</ServiceConfiguration>

以下是云文件:

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration ...>
  <Role name="WebRole">
    <ConfigurationSettings>
      <Setting name="MessagesConfigurationBlobName" value="containername" />
      <Setting name="MessagesConfigurationBlobContainerName" value="CloudMessageConfig.xml"/>
    </ConfigurationSettings>
  </Role >
</ServiceConfiguration>

现在我将痛哭一场,并将我的时间跟踪(周六凌晨3点)从“紧急客户工作”调整为“开发者PEBCAK”

这个故事的寓意是,当相同的代码在一个环境中失败而在另一个环境中成功时,不要只是比较环境,而是比较环境之间您自己的代码中可能不同的一切


哦,不要试图在凌晨3点部署软件。曾经。

如果您可以发布一些代码,这会有所帮助。还有其他可能导致错误的情况-例如,分区键/行键带有无效字符,日期超出范围。这些是表存储,而不是blob。您可以尝试通过RDP在VM上使用Fiddler来捕获经过的HTTP请求。您确定容器(在实际blob存储中)存在吗?在尝试设置权限之前,请尝试一个
容器。CreateIfNotExists()
?一般建议使用Fiddler查看请求/响应。但是,由于这只在代码以您的角色运行时发生,要调试此问题,您可以做的一件事是捕获此异常,然后获取“ExtendedErrorInformation”异常的属性。这将告诉您有关错误()的更多详细信息。可能是您在本地(本地配置文件)和部署(云配置文件)时使用了不同的连接字符串吗?