Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure DocumentDB所有者资源不存在_Azure_Azure Cosmosdb - Fatal编程技术网

Azure DocumentDB所有者资源不存在

Azure DocumentDB所有者资源不存在,azure,azure-cosmosdb,Azure,Azure Cosmosdb,我遇到了相同的错误icrosoft.Azure.Documents.DocumentClientException:消息:{“Errors”:[“所有者资源不存在”]},这是我的场景。当我将我的webapp部署到Azure并尝试从docDb获取一些文档时,它抛出了这个错误。docdb存在于azure中,包含我要查找的文档 奇怪的是,从我的本地机器(从VS运行)来看,这一切都很好。我在Azure和local中使用相同的设置。有人对此有自己的想法 谢谢此错误肯定与读取不存在的数据库/集合/文档有关。

我遇到了相同的错误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”:[“所有者资源不存在”]}
,文档似乎不存在于集合中。但你提到它是存在的。你有试过吗。检查documentId
uridocumenturi=UriFactory.CreateDocumentUri(databaseName,collectionName,documentId)当文档不存在于集合中时,我可以重新生成错误信息。您是否尝试配置另一个documentdb来测试它?正如我所知,没有必要在Azure WebApp上进行特殊配置。更多详细信息请参阅注释:数据库名称似乎区分大小写。这是我的问题。Azure Portal//Overview中显示了正确的数据库名称和容器名称