Azure DocumentDB所有者资源不存在

use*_*722 13 azure azure-cosmosdb

我有相同的错误icrosoft.Azure.Documents.DocumentClientException:消息:{"错误":["所有者资源不存在"]},这是我的方案.当我将我的webapp部署到Azure并尝试从docDb获取一些文档时,它会抛出此错误.docdb存在于azure中,包含我要查找的文档.

奇怪的是,从我的本地机器(从VS运行),这工作正常.我在Azure和本地使用相同的设置.有人对此有所了解.

谢谢

Man*_*ddy 21

所有者资源不存在

当您提供错误的数据库名称时会发生.

例如,client.readDocument(..)在使用客户端是DocumentClient实例的情况下读取文档时,给出的数据库名称docLink是错误的.

  • 正确的数据库名称和容器名称显示在 Azure 门户/<your Cosmos DB>/概述中 (2认同)

Lou*_*caj 4

这个错误肯定与读取不存在的数据库/集合/文档有关。对于确实存在的数据库,我遇到了同样的错误,但我输入的名称为小写,无论您的分区键如何,似乎都会发生此错误。

我现在能想到的最好的解决方案是包装

var response = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(database, collection, "documentid"));
Run Code Online (Sandbox Code Playgroud)

调用 try catch,不是很优雅,我更希望响应返回一些更多细节,但这就是 Microsoft 为您服务的。

像下面这样的东西应该可以解决问题。

                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
                }
Run Code Online (Sandbox Code Playgroud)

这是为了更好地了解错误,然后创建丢失的资源,这样您就不会再收到错误了。

在得出这个结论之前我必须浏览一些资源: https://github.com/DamianStanger/DocumentDbDemo

Azure DocumentDB 读取文档资源未找到