2016-06-20 84 views
0

我想通过其余的API在documentDB中创建一个新文档。我会使用SDK,但即时通讯从asp.net核心运行项目和SDK是不兼容的。documentDB .net Rest创建自动创建文档ID

我想让documentDB自动生成文档的id,但我遇到了我的请求问题。

当通过documentDB rest api(使用基于ID的路由)创建文档时,我应该如何设置ids值?

现在我遇到了400错误的请求错误。

香港专业教育学院试图与该ID以下变化张贴:

  • 没有id属性
  • ID:空
  • ID: “”

我使用的代码基本上是什么在github .net休息的例子,我有替换调用,让电话工作正常。

这里是我的代码发出请求:

//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

如果您提供身份证明,您能确认它是否有效?如果是这样,那么我怀疑auto-id功能是客户端SDK的一个功能。我能够隔离node.js SDK源代码中的GetGuid函数,并使用它(主要是因为我想在进行API调用之前保留它的句柄,我怀疑你可以对.NET执行相同的操作)源代码)并将其剪切并粘贴到您的代码中,或者,您可以下载和GUID生成库。 –

+0

现在,我将它设置为使用一个id(连接两个外键,至少1是唯一的)并希望现在应该没问题,但我可能需要查看GUID库或查看您提到的GetGuid函数。 –

回答

1

您应该对“ID”属性提供一个字符串值。 auto-id功能(如Larry提到)是客户端功能,不属于REST API。因此,当直接从REST使用时,您必须生成一个Guid(或任何唯一的字符串)并使用该值设置“id”属性。