Azure 存储 Table 插入失败 "One of the request inputs is not valid"

Azure Storage Table Insert failing with "One of the request inputs is not valid"

我正在尝试使用 Insert Entity API 将哑实体插入 javascript 中的 Azure 存储 Table。我启用了 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

这是请求负载:

{Message: "test", RowKey: "myrowkey", PartitionKey: "mypartitionkey"}

这是响应,其 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

与 body:

{"odata.error":{"code":"InvalidInput","message":{"lang":"en-US","value":"One of the request inputs is not valid.\nRequestId:4994f291-0002-004d-1cdd-49d7ff000000\nTime:2016-01-08T06:23:30.4716844Z"}}}

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

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

{"Message": "test", "RowKey": "myrowkey", "PartitionKey": "mypartitionkey"}

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

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