web-dev-qa-db-ja.com

Azure DocumentDB所有者リソースが存在しません

同じエラーが発生しましたicrosoft.Azure.Documents.DocumentClientException:Message:{"Errors":["Owner resource does not exist"]}、これは私のシナリオです。 webappをAzureにデプロイしてdocDbからドキュメントを取得しようとすると、このエラーがスローされます。 docdbはAzureに存在し、探しているドキュメントが含まれています。

奇妙なことに、私のローカルマシン(VSから実行)からはこれは正常に動作します。 Azureとローカルで同じ設定を使用しています。誰かがこれについて考えています。

ありがとう

14
user1301722

オーナーリソースが存在しません

間違ったデータベース名を指定した場合に発生します。

たとえば、クライアントがDocumentClientインスタンスであるclient.readDocument(..)を使用してドキュメントを読み取る場合、docLinkで指定されたデータベース名は間違っています。

21

私も同じ問題を抱えていました。 Visual Studio 2017は、選択したテスト構成ではなく、リリース構成を使用して公開していることがわかりました。 私の場合、リリース構成に、存在しない別のCosmosDBデータベース名が含まれていました。これにより、Azureテストサーバーに公開したときに「所有者リソースが存在しません」というエラーが発生しました。非常にイライラし、ひどいエラーメッセージ。

2
Steve Perkins

このエラーは確かに、存在しないデータベース/コレクション/ドキュメントの読み取りに関連しているようです。存在していたデータベースとまったく同じエラーが発生しましたが、名前を小文字で入力しました。このエラーは、パーティションキーに関係なく発生するようです。

今のところ私が思いつくことができる最善の解決策は、

var response = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(database, collection, "documentid"));

非常にエレガントではなく、トライキャッチを呼び出します。むしろ、より詳細な応答が返されますが、これはマイクロソフトのyaです。

以下のようなものがうまくいくはずです。

                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

Azure DocumentDB読み取りドキュメントリソースが見つかりません

1
Louie Bacaj

また、ドキュメントへの添付ファイルが見つからないことが原因である可能性もあります。これは、 Azure Cosmos DBデータ移行ツール を使用してcosmos dbコンテンツを移動する場合の一般的なシナリオです。これにより、すべてのドキュメントが完全な定義で移動されますが、残念ながら実際の添付ファイルのコンテンツは移動されません。

したがって、この結果、ドキュメントには添付ファイルがあること、および添付ファイルのリンクも示されますが、そのリンクでは、ツールが移動していないため、添付ファイルは見つかりません。

次のようにコードをラップします

try{
    var attachments = client.CreateAttachmentQuery(attacmentLink, options);
    [...]
}
catch (DocumentClientException ex)
{
    throw new Exception("Cannot retrieve attachment of document", ex);
}

何が起こっているのかについての有意義なヒントを得るために。

0
Mosè Bottacini