2016-08-21 6 views
1

DocumentDBコレクションに対してDELETE動詞を実行しようとすると、常に401が表示されます。クエリ/挿入/更新のPOSTはうまくいきますので、私のコードが正しいかどうか確かめてください。しかし、私は確信していない私は、リソースIDとリソースの種類のために渡す必要があります。 (作品)POSTの場合DocumentDB - DELETEによって401エラーが発生する

payLoad := LowerCase(Verb) + #10+ 
      LowerCase(resourceType) + #10+ 
      LowerCase(resourceId) + #10+ 
      LowerCase(utc_date) + #10 + 
      '' + #10; //instead of the "date" header 

、私は削除するドキュメントのURLの「_self」プロパティの値を使用してDELETEの場合

"docs" and "dbs/mydb/mycol/licenses" 

を使用しています。私はちょうど私は考えることができ、リソースタイプとリソースIDの任意の組み合わせについて試してみました:

docs dbs/icUoAA==/colls/icUoAKizCgA=/docs 
docs dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA== 
docs dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==/ 
docs/icUoAKizCgADAAAAAAAAAA== dbs/icUoAA==/colls/icUoAKizCgA=/docs 
docs/icUoAKizCgADAAAAAAAAAA== dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA== 
etc. 

DELETEしかし、常に401で失敗し、私は別の何かを使用する必要がありますか?

ありがとうございました!

+0

「ドキュメントを削除するREST API」ドキュメント(https://msdn.microsoft.com/en-us/library/azure/mt489087.aspx)を見ると、システムに割り当てられたリソースIDの代わりにドキュメント名が必要であることがわかりましたリソースIDを使用している間それがあなたが得ているこのエラーの理由でしょうか? –

+0

しかし、 "名前"とは何ですか?それは間違いなくIDではありません(あなたが削除のためにIDを使うことができないと不満を言っている議論がかなりあります)ので、 "_self"または "_rid"のいずれかになります。 –

+0

私が見てきた例から、あなたのコレクション内のドキュメントに割り当てる "名前"は "名前"です。 –

答えて

2

DocumentDBには2種類のリクエストがあります。 1つは、定義した "id"プロパティーと、内部リソースID( "_rid")に基づくプロパティーに基づいています。あなたは、「ID」を使用しているときは、削除のためになるよう、認証トークンを生成するためのリンク全体を使用する必要があり、それはあなたが内部リソースIDを使用している場合は、あなただけの合格

delete 
docs 
dbs/mydb/colls/mycol/docs/cc0d4caabc714aac976c9d0a2e9243ed 
sun, 21 aug 2016 20:00:00 
//newline 

ようになります。削除しようとしている文書の「_rid」で、例えばこれらのデバッグに役立つかもしれない

delete 
docs 
icuoakizcgadaaaaaaaaaa== //lowercase 
sun, 21 aug 2016 20:00:00 
//newline 

ことの一つは、それが伝えるエラーメッセージが含まれている必要があり401で返されるレスポンスボディを見ていますあなたはサーバーが期待したペイロードを取得します。

+0

また、 "id"を使用してドキュメントを削除することができます - https ://msdn.microsoft.com/en-us/library/azure/mt489087.aspx – Shreshth

+0

これはうまくいきました、ありがとうございました! –

関連する問題