2

似乎随机我无法从 DocumentDB 获取文档。我可以调试,让它失败并显示以下消息,然后重试并工作。如果这与我的 MAC 地址有关,我也尝试过从不同的工作站获得相同的结果。

Microsoft.Azure.Documents.UnauthorizedException, message: {"Errors":["在 HTTP 请求中找到的 MAC 签名与计算的签名不同。服务器使用以下字符串进行签名 - 'post\ndocs\nmo1oanohoga=\nwed , 2015 年 2 月 25 日 12:35:57 格林威治标准时间\n\n'"]}

我什至如何去a)报告这个和b)试图弄清楚发生了什么?

4

5 回答 5

2

我有同样的问题。但错误是我的。

为了解决这个问题,我改变了 Uri 方法。

前:

this._documentCollectionUri = UriFactory.CreateDocumentUri(this._dataBaseName, this._collectionName, this._dataBaseName);

现在:

this._documentCollectionUri = UriFactory.CreateDocumentCollectionUri(this._dataBaseName, this._collectionName);

缺乏关注或照顾

流水线

于 2018-04-10T19:55:27.287 回答
1

我们已经确认这是一个孤立于北欧地区的问题。我们正在对受影响的已知帐户应用修补程序,并将很快部署修补程序。

如果您不在北欧并且遇到此问题,或者如果您在收到此回复后的 2-3 天内继续查看,请再次与我们联系,以便我们进行进一步调查。

于 2015-02-27T22:41:13.457 回答
1

在 1.9 版本的 SDK 中似乎有一个特殊的回归,可能会导致出现此错误。我很欣赏这与原始问题无关,但是如果您搜索此错误,您会来到这里,因此认为这是发布它的合适位置。

此(错误)代码将在 SDK 1.8 和 1.9 中给出不同的错误消息:

docClient.CreateDocumentCollectionQuery(
     UriFactory.CreateDocumentCollectionUri(DbName, CollectionName))
  .Where(c => c.Id == CollectionName).ToList().Any()

1.8中,您将正确获得ResourceType Collection is unexpected.

1.9中你会得到The MAC signature found in the HTTP request is not the same as the computed signature. Server used following string to sign...

由于某种原因,它看起来像 1.9 返回错误的错误消息(由 OP 引用的错误消息),但由于它完全具有误导性,您将很难追踪问题。

要清楚;我发布的代码是错误的。我要解释的问题是 SDK 版本 1.9 返回错误的错误消息。

于 2016-07-18T12:23:22.037 回答
0

您能否检查一下您的系统时钟时间是否与错误消息返回的时间显着不同(< 5 分钟或大于 20 分钟)?由于时钟偏差,可能会返回此错误。如果是这种情况,更新您的时钟时间可能会解决此问题。

DocumentDB 客户端使用主密钥和请求的时间戳构造消息验证代码 (MAC) 以验证请求。出于安全原因,该服务在小时间窗口之外拒绝带有 MAC 的请求。

于 2015-02-25T16:27:44.797 回答
0

我之前的答案被删除了(我相信,错误或误解......)

您可以检查您是否尝试使用只读密钥提交写入操作。尝试使用只读键写入会引发该异常。

如果您使用静态类或方法来生成图形客户端,则可能是您使用了错误的客户端实例,该客户端使用了只读键。

于 2019-12-19T10:20:01.867 回答