我有同样的错误icrosoft.Azure.Documents.DocumentClientException:消息:{"错误":["所有者资源不存在"]},这是我的方案。当我将我的webapp部署到Azure并尝试从docDb获取一些文档时,它会抛出此错误。 docdb存在于azure中,包含我要查找的文档。
奇怪的是,从我的本地机器(从VS运行),这工作正常。我在Azure和本地使用相同的设置。有人对此有所了解。
由于
答案 0 :(得分:13)
如果您提供了错误的数据库名称,则会发生所有者资源不存在
。
例如,在使用client.readDocument(..)
读取文档时,客户端为DocumentClient
实例,docLink
中给出的数据库名称错误。
答案 1 :(得分:2)
我遇到了同样的问题。我发现Visual Studio 2017使用我的Release配置而不是我选择的Test配置进行发布。 在我的情况下,Release配置具有不同的CosmosDB数据库名称,这导致我发布到Azure测试服务器时出现“所有者资源不存在”错误。超级沮丧和可怕的错误信息。
答案 2 :(得分:1)
这个错误肯定与读取不存在的数据库/集合/文档有关。对于确实存在的数据库,我得到了相同的确切错误,但是我将名称输入为小写,无论您的分区键是什么,都会出现此错误。
我现在能提出的最佳解决方案是包装
var response = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(database, collection, "documentid"));
调用try catch,不是很优雅,我宁愿回复更多细节,但这是微软的。
像下面这样的东西可以解决问题。
Model myDoc = null;
try
{
var response = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(database, collection, document));
myDoc = (Model )(dynamic)response.Resource;
}
catch { }
if (myDoc != null)
{
//do your work here
}
这是为了更好地了解错误,然后创建缺少的资源,这样你就不会再得到错误了。
在得出这个结论之前我必须经历的一些资源: https://github.com/DamianStanger/DocumentDbDemo
答案 3 :(得分:0)
这也可能是由于找不到文档附件引起的。 当您使用Azure Cosmos DB Data Migration tool移动cosmos db内容时,这是常见的情况,这将移动所有具有完整定义的文档,但不幸的是,不是真正的附件内容。
因此,此结果导致文档中声明其具有附件,并且还声明了附件链接,但是在该给定链接处找不到附件,因为该工具尚未移动附件。
现在,我将代码包装如下
try{
var attachments = client.CreateAttachmentQuery(attacmentLink, options);
[...]
}
catch (DocumentClientException ex)
{
throw new Exception("Cannot retrieve attachment of document", ex);
}
对正在发生的事情有有意义的提示。