2016-01-08 19 views
1

我试图在JavaScript中使用Insert Entity API将一个哑实体插入到Azure存储表中。我启用了CORS和管理,以获得我的请求验证,但我死的简单请求与One of the request inputs is not valid.消息Azure存储表插入失败,“其中一个请求输入无效”

这里失败是在要求更多的细节:

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”}

这里是响应,瓦特HICH具有HTTP状态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“,”value“:”一个 的请求输入不是 有效。\ nRequestId:4994f291-0002-004d-1cdd-49d7ff000000 \ n时间:2016-01-08T06:23:30.4716844Z“}}}

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

+0

我们在应用程序中广泛使用JavaScript/AJAX/CORS来管理表格数据。我只是在你的请求有效负载中试过它,它工作得很好。看起来像一些其他问题。是否有可能分享一些代码? –

+0

如果可能,请分享您尝试上传的json正文。 –

回答

0

我发现通过试错方法中的溶液。请求头If-Match:*是问题所在。我删除了该标题,并开始工作。

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

0

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

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

+1

我试过没有引号的键,这也是有效的。 –

+0

好啊,它实际上也适用于我,但考虑到它与文档不匹配,我仍然认为,如果有任何偶然的其他差异,我会建议。 –

相关问题