我正在编写一个简单的API,将json文档发布到DocumentDB中的单个集合。奇怪的是,当我尝试多次添加具有相同id的文档时,我没有异常或错误指示。
public static async Task<ResourceResponse<Document>> CreateDocument(Database database, DocumentCollection collection, object obj)
{
try
{
Uri collUri = UriFactory.CreateDocumentCollectionUri(database.Id, collection.Id);
return await client.CreateDocumentAsync(collUri, obj, null, true);
}
catch (DocumentClientException e)
{
// nothing is ever caught...
}
}
我看到的行为是第一份文件保存。我可以在文档资源管理器中看到它。然后,如果我更改数据并保持相同的ID,代码似乎工作,但更新的文档实际上没有保存,但我没有得到预期的异常。我觉得这里应该有例外我错了吗?
答案 0 :(得分:1)
如果发生冲突,DocumentDB会向Microsoft.Azure.Documents.DocumentClientException
发送消息:{"Errors":["Resource with specified id or name already exists"]}
。
您没有看到异常的原因(很可能)是您所拥有的代码是异步运行的。换句话说,您的代码可能在返回创建操作的结果之前结束执行。您只需调用.Result
即可解决异步方法。