2016-01-08 20 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

好啊,它實際上也適用於我,但考慮到它與文檔不匹配,我仍然認爲,如果有任何偶然的其他差異,我會建議。 –

相關問題