2017-04-21 84 views
4

我有相同的錯誤icrosoft.Azure.Documents.DocumentClientException:消息:{「錯誤」:[「所有者資源不存在」]},這是我的方案。當我將我的webapp部署到Azure並嘗試從docDb獲取一些文檔時,它會引發此錯誤。 docdb以azure存在,幷包含我查找的文檔。Azure DocumentDB所有者資源不存在

奇怪的是,從我的本地機器(從VS運行),這工作正常。我在Azure和本地中使用相同的設置。有人有這個想法。

感謝

+0

根據異常'「錯誤」:[「所有者資源不存在」]},似乎文檔不存在於集合中。但是你提到它是存在的。你有沒有嘗試[遠程調試WebApp](https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-dotnet-troubleshoot-visual-studio#a-nameremotedebugaremote-調試,網絡應用程序)。檢查documentId'Uri documentUri = UriFactory.CreateDocumentUri( databaseName, collectionName, documentId);' –

+0

我只是可以重新生成錯誤信息,而文檔不存在集合。你有嘗試配置另一個documentdb來測試它嗎?據我所知,不需要在Azure WebApp上進行特殊配置。更多詳細信息請參考[文檔](https://docs.microsoft.com/en-us/azure/documentdb/documentdb-dotnet-application#a-nametoc395637774astep-7-deploy-the-application-to-azure-網站) –

回答

0

此錯誤肯定似乎與讀取數據庫/收集/文件不存在。對於確實存在的數據庫,我得到了相同的確切錯誤,但我輸入的名稱爲小寫,無論您的分區密鑰如何,都會出現此錯誤。

我能想出現在最好的解決辦法是包裹

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 
       } 

這是爲了更好地瞭解錯誤,然後創建缺失的資源,以便您不再發生錯誤。

一些資源,我不得不得出這一結論之前,要經過: https://github.com/DamianStanger/DocumentDbDemo

Azure DocumentDB Read Document Resource Not Found

+0

注意:看起來數據庫名稱是CASE-SENSITIVE。這是我的問題。 –

3

「自有資源不存在」當你給一個錯誤的數據庫名稱出現。

例如,在用client.readDocument讀取文檔時,其中客戶端是DocumentClient實例,但docLink中給出的數據庫名稱是錯誤的。

相關問題