是否有一种方法可以从DocumentClientException
的{{1}}位置确定是找不到文档,集合还是数据库?
我试图弄清楚我是否可以实现按需收集设置,并且仅在需要时调用StatusCode == HttpStatusCode.NotFound
。我试图避免在发出每个请求之前调用它(大概这会为每个请求增加一次网络往返)。同样,当我知道它无济于事时,我正尝试避免在错误恢复上调用它。
从对本地仿真器的试验来看,在这三种情况下,我看到的唯一字段是DocumentClient.CreateDocumentCollectionIfNotExistsAsync
,并且仅当找不到数据库时。我通常会尝试避免基于人类可读的消息进行异常调度。
错误的数据库名称:
DocumentClientException.Error.Message
:StatusCode
HttpStatusCode.NotFound
:Error.Message
正确的数据库名称,错误的集合名称:
{\"Errors\":[\"Owner resource does not exist\"]}...
:StatusCode
HttpStatusCode.NotFound
:Error.Message
正确的数据库名称,正确的集合名称,错误的文档ID:
{\"Errors\":[\"Resource Not Found\"]}...
:StatusCode
HttpStatusCode.NotFound
:Error.Message
我打算使用具有自己报价的数据库。由于数据库中具有自己报价的集合很便宜,因此,我尝试查看是否can segregate each tenant in my multi-tenant application into its own collection。每个租户最终都有不同的索引编制和默认TTL策略。集合的集合不是固定的,而是在运行期间随着新租户的注册而动态更改。我无法预测何时需要添加新集合。没有新的租户通知:我只是通过在可能不存在的集合中创建文档来收到需要处理的请求。有一个垃圾收集未使用的集合的过程。
我正在针对SQL API Cosmos数据库实例的.NET Core 2.1应用程序中使用NuGet包Microsoft.Azure.DocumentDB.Core版本1.9.1。
答案 0 :(得分:-1)
如果详细查看Message属性,则应该看到以下字符串,该字符串通知是否由于Document vs Collection生成了404 Not Found响应。
这不是理想的选择,但是您可以尝试从错误消息中对信息进行正则表达式。