windows Azure奇怪的行为,同时将实体保存到Windows Azure表存储

时间:2013-01-06 18:17:23

标签: azure azure-storage

我将批量实体保存到Azure表存储中,对于某些实体,它可以完美地保存到同一个表的表存储中。但有些记录,表存储在下面抛出异常。

ErrorMessage:处理此请求时发生错误。,InnerExceptionMessage:   OutOfRangeInput   48:其中一个请求输入超出范围。 请求ID:f72230dd-55ea-4bc9-92b5-ca576af64324 时间:2013-01-05T07:16:19.4614968Z

有任何1遇到上述错误。

-Mahender

3 个答案:

答案 0 :(得分:2)

添加到@knightpfhor回答:

错误消息中的

48 ”表示批次中的实体#48存在问题。除了上面提到的可能的罪魁祸首之外,请检查该实体的PartitionKey值。批处理中的所有实体必须具有相同的PartitionKey值。同时检查您的批次中是否包含两次相同的实体。实体(即唯一的PartitionKey / RowKey组合)只能在批处理中出现一次。

使用Fiddler跟踪发送到存储的原始数据也是一个好主意。通过Fiddler跟踪请求/响应将帮助您查明错误。

最后,请查看此链接,了解有关实体组交易的更多信息:http://msdn.microsoft.com/en-us/library/windowsazure/dd894038.aspx

答案 1 :(得分:0)

此错误通常意味着它所说的内容,因为某些记录的值不能保存,因为它们超出了范围。常见的罪魁祸首通常是具有无效值的PartitionKey或RowKey,或者您正在尝试保存表存储不支持的类型。有关可以使用的内容的信息,请参阅MSDN documentation

答案 2 :(得分:0)

当使用azure table rest api查询winjs windows store app中的实体时,我收到此错误并在搜索错误时点击此处。对我来说,这是因为在更改代码以形成存储模拟器的xhr请求时出现了愚蠢的错误。

计算授权标头的代码中的错误使授权标头为SharedKey devstoreaccount1/devstoreaccount1: <computed key>,而它应该是SharedKey devstoreaccount1: <computed key>。由于存储帐户名称中包含“/”字符,因此引发了此错误。

Sidenote :在授权标头计算期间,stringToSign具有CanonicalResource。 CanonicalResource在日志表中查询azure模拟存储的所有实体是/devstoreaccount1/devstoreaccount1/logs(),其中azure myaccount存储帐户为/myaccount/logs()。请注意,对于模拟存储,重复存储帐户两次。