Azure存储表插入失败,其中“其中一个请求输入无效”

时间:2016-01-08 06:33:43

标签: c# azure azure-table-storage

我正在尝试使用Insert Entity API在javascript中将哑实体插入Azure存储表。我启用了CORS并设法对我的请求进行了身份验证,但我死的简单请求失败并显示One of the request inputs is not valid.消息

以下是有关请求的详细信息:

Accept:application/json;odata=nometadata
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Authorization:SharedKey <account>:<secret>
Cache-Control:no-cache
Connection:keep-alive
Content-Length:70
Content-type:application/json
DataServiceVersion:3.0;NetFx
Host:<account>.table.core.windows.net
If-Match:*
MaxDataServiceVersion:3.0;NetFx
Origin:http://localhost:6091
Referer:http://localhost:6091/
x-ms-date:Fri, 08 Jan 2016 06:23:29 GMT
x-ms-version:2013-08-15

这是请求有效载荷:

  

{消息:“测试”,RowKey:“myrowkey”,PartitionKey:“mypartitionkey”}

这是响应,其状态为400:

Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:x-ms-request-id,x-ms-version
Content-Type:application/json;odata=nometadata;streaming=true;charset=utf-8
Date:Fri, 08 Jan 2016 06:23:30 GMT
Server:Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
x-ms-request-id:4994f291-0002-004d-1cdd-49d7ff000000
x-ms-version:2013-08-15

身体:

  

{ “odata.error”:{ “代码”: “InvalidInput”, “消息”:{ “郎”: “的en-US”, “值”:“一   请求输入不是   有效\ nRequestId:4994f291-0002-004d-1cdd-49d7ff000000 \ n时间:2016-01-08T06:23:30.4716844Z“}}}

我看到有人抱怨这条非描述性错误消息。但是,我很确定这个请求有效负载是好的。 RowKeyPartitionKey没有特殊字符,Message字段不必提供odata类型(但请相信我,我也尝试过)。我也试过提供的有效载荷作为例子,问题仍然存在。

2 个答案:

答案 0 :(得分:1)

我通过反复试验方法找到了解决方案。请求标头If-Match:*是问题所在。我删除了那个标题,它开始工作了。

Azure肯定需要更明确,更清楚地了解其文档和错误消息。

答案 1 :(得分:0)

如果您检查链接到插入实体的文档中的示例JSON正文,您会注意到键应该在引号中。尝试发送如下所示的正文:

{“Message”:“test”,“RowKey”:“myrowkey”,“PartitionKey”:“mypartitionkey”}