2016-06-20 10 views
0

残りのAPIを介してdocumentDB内に新しい文書を作成しようとしています。私はSDKを使用しますが、私はasp.netコアからプロジェクトを実行していますが、SDKはまだ互換性がありません。documentDB .net Rest自動生成IDを使用して文書を作成

文書のIDを自動的に生成したいのですが、私の要求に問題があります。

(IDベースルーティングを使用して)documentDB rest apiを使用してドキュメントを作成する際に、ids値を設定する必要がありますか?

今、私は400の不正なリクエストエラーでヒットしています。

  • ませidプロパティが
  • ID:ヌル
  • idは: ""

私が使用しているコードはありません

アイブ氏は、IDに以下のバリエーションでそれを投稿してみました基本的に何がgithubにあった。ネットの残りの例、私は交換の呼び出しを持って、うまく動作する呼び出しを取得します。

//Create a document 
     verb = "POST"; 
     resourceType = "docs"; 
     resourceLink = string.Format("dbs/{0}/colls/{1}/docs", databaseId, collectionId); 
     resourceId =string.Format("dbs/{0}/colls/{1}", databaseId, collectionId); 


     authHeader = GenerateMasterKeyAuthorizationSignature(verb, resourceId, resourceType, masterKey, "master", "1.0"); 

     client.DefaultRequestHeaders.Remove("authorization"); 
     client.DefaultRequestHeaders.Add("authorization", authHeader); 

     string content = JsonConvert.SerializeObject(document); 
     StringContent contentMessage = new StringContent(content, System.Text.Encoding.UTF8, "application/json"); 
     contentMessage.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); 
     contentMessage.Headers.ContentType.CharSet = null; 
     var r = client.PostAsync(baseUri + resourceLink, contentMessage).Result; 
     System.Diagnostics.Debug.WriteLine(r.Content.ReadAsStringAsync().Result); 

     return r.Content.ReadAsStringAsync().Result; 
+1

IDを入力しても機能することを確認できますか?もしそうなら、私はauto-id機能がクライアント側SDKの機能であると思われます。私はnode.js SDKソースのGetGuid関数を分離することができました。これは主にAPI呼び出しを行う前にハンドルを保持したいからです。.NETで同じことをすることができると思われます –

+0

今のところ私はIDを使用するように設定しています(少なくとも2つの外部キーを連結していれば一意です)、それは動作しますが、それはあなたのコードに貼り付けて、私はGUIDライブラリをチェックアウトするか、あなたが言及したGetGuid関数をチェックアウトしなければならないかもしれません。 –

答えて

1

あなたは「ID」プロパティの文字列値を指定する必要があります。ここ

は私のコードは、要求を行っています。自動ID機能(Larryのように)は、クライアント側の機能であり、REST APIの一部ではありません。したがって、RESTから直接消費する場合は、Guid(または一意の文字列)を生成し、その値で「id」プロパティを設定する必要があります。

関連する問題