Azure DocumentDB所有者资源不存在
我遇到了相同的错误icrosoft.Azure.Documents.DocumentClientException:消息:{“Errors”:[“所有者资源不存在”]},这是我的场景。当我将我的webapp部署到Azure并尝试从docDb获取一些文档时,它抛出了这个错误。docdb存在于azure中,包含我要查找的文档 奇怪的是,从我的本地机器(从VS运行)来看,这一切都很好。我在Azure和local中使用相同的设置。有人对此有自己的想法Azure DocumentDB所有者资源不存在,azure,azure-cosmosdb,Azure,Azure Cosmosdb,我遇到了相同的错误icrosoft.Azure.Documents.DocumentClientException:消息:{“Errors”:[“所有者资源不存在”]},这是我的场景。当我将我的webapp部署到Azure并尝试从docDb获取一些文档时,它抛出了这个错误。docdb存在于azure中,包含我要查找的文档 奇怪的是,从我的本地机器(从VS运行)来看,这一切都很好。我在Azure和local中使用相同的设置。有人对此有自己的想法 谢谢此错误肯定与读取不存在的数据库/集合/文档有关。
谢谢此错误肯定与读取不存在的数据库/集合/文档有关。对于一个确实存在的数据库,我得到了相同的错误,但我以小写形式输入了名称,无论您的分区键如何,都会出现此错误 目前我能想到的最好的解决办法是把
var response = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(database, collection, "documentid"));
打电话来试试看,不是很优雅,我更希望回复中有更多细节,但这是微软为你准备的
像下面这样的东西应该可以做到这一点
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
}
这是为了更好地了解错误,然后创建丢失的资源,这样就不会再出现错误
在得出这一结论之前,我必须通过一些资源:
所有者资源不存在
在提供错误的数据库名称时发生
例如,当使用
client.readDocument(..)
读取文档时,如果客户端是DocumentClient
实例,则docLink
中给出的数据库名称是错误的。我也遇到了同样的问题。我发现Visual Studio 2017使用的是我的发布配置,而不是我选择的测试配置在我的情况下,发布配置具有不同的CosmosDB数据库名称,但该名称不存在,这导致在我发布到Azure测试服务器时出现“所有者资源不存在”错误。超级令人沮丧的错误消息。这也可能是由于找不到文档附件造成的。
这是一个常见的场景,当您移动cosmos db内容时,使用它移动所有文档及其完整定义,但不幸的是,不是真正的附件内容
因此,这将导致一个文档声明它有一个附件,并且还声明了附件链接,但是在该给定链接上找不到附件,因为工具没有移动它
现在我将代码包装如下
try{
var attachments = client.CreateAttachmentQuery(attacmentLink, options);
[...]
}
catch (DocumentClientException ex)
{
throw new Exception("Cannot retrieve attachment of document", ex);
}
对正在发生的事情有一个有意义的提示。根据异常
“Errors”:[“所有者资源不存在”]}
,文档似乎不存在于集合中。但你提到它是存在的。你有试过吗。检查documentIduridocumenturi=UriFactory.CreateDocumentUri(databaseName,collectionName,documentId)代码>当文档不存在于集合中时,我可以重新生成错误信息。您是否尝试配置另一个documentdb来测试它?正如我所知,没有必要在Azure WebApp上进行特殊配置。更多详细信息请参阅注释:数据库名称似乎区分大小写。这是我的问题。Azure Portal//Overview中显示了正确的数据库名称和容器名称