【问题标题】:Microsoft.Azure.Documents.DocumentClientException: Server could not parse the UrlMicrosoft.Azure.Documents.DocumentClientException:服务器无法解析 URL
【发布时间】:2015-09-10 23:59:13
【问题描述】:

我正在使用 .Net 的 1.4.1 版本的 DocumentDB 客户端,当我尝试更新集合中的文档时,我收到此错误:

DocumentClientException:服务器无法解析 URL。

当我这样做时:

await _repository.Client.ReplaceDocumentAsync(DocumentsLink, document);

其中 Client 是 DocumentClient,DocumentsLink 是路径的 URI dbs/9TBhAA==/colls/9TBhANQ4yAA=/docs/

这样构造的:

public Uri DocumentsLink
{
    get
    {
        if (string.IsNullOrEmpty(_documentsLink))
        {
            _documentsLink = _repository.Collection.DocumentsLink;
        }
        return new Uri(_documentsLink, UriKind.Relative);
    }
}

并记录一个简单的 json 文档。

此代码在同一数据库的不同集合上运行良好。

如果我使用 linq 扩展并传递一个字符串而不是相对 URI,我会得到同样的错误。

谁有解决这个问题的方法?

【问题讨论】:

  • 这个uri真的是adbs/9TBhAA==/colls/9TBhAPqqYgE=/docs/吗?它不应该以 a 开头。
  • 确实是问题的错字,我正在调整问题

标签: c# .net azure azure-cosmosdb


【解决方案1】:

这很奇怪;您确定这适用于同一数据库中的不同集合吗?

ReplaceDocumentAsync() 需要特定文档的完整路径。路径 dbs/9TBhAA==/colls/9TBhANQ4yAA=/docs/ 仅解析为集合。

您需要附加删除文档 - 如下所示:dbs/UtJlAA==/colls/UtJlAKU5IAE=/docs/UtJlAKU5IAELAAAAAAAAAA==/

【讨论】:

  • 你是对的。尽管 Create 和 Replace 方法中的链接参数具有相同的名称 (documentCollectionUri),但方法摘要不同。我仍然对为什么其他系列没有出现这种情况感到困惑,但这不是这篇文章的原因。谢谢!
猜你喜欢
  • 2022-10-19
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多