看似随机我无法从DocumentDB获取文档。我可以调试,让它失败,下面的消息,然后再试一次,然后工作。如果这与我的MAC地址有关,我也尝试从不同的工作站获得相同的结果。
Microsoft.Azure.Documents.UnauthorizedException,message: {“错误”:[“在HTTP请求中找到的MAC签名不是 与计算的签名相同。服务器使用以下字符串进行签名 'post \ ndocs \ nmo1oanohoga = \ nwed,25 feb 2015 12:35:57 gmt \ n \ n'“]}
我如何报道a)和b)试图了解正在发生的事情?
答案 0 :(得分:2)
我遇到了同样的问题。但错误是我的。
要修复我已经改变了Uri方法。
在:
this._documentCollectionUri = UriFactory.CreateDocumentUri(this._dataBaseName, this._collectionName, this._dataBaseName);
现在:
this._documentCollectionUri = UriFactory.CreateDocumentCollectionUri(this._dataBaseName, this._collectionName);
缺乏关注或关心
FLW
答案 1 :(得分:1)
我们已经证实这是一个与北欧地区隔离的问题。 我们正在对已知帐户应用修补程序,并将很快部署修复程序。
如果您不在北欧并且遇到此问题,或者如果您在此回复的2-3天内继续查看,请再次与我们联系,以便我们进一步调查。
答案 2 :(得分: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返回错误的错误消息。
答案 3 :(得分:0)
请问您的系统时钟时间是否与错误消息返回的系统时钟显着不同(<5分钟或大于20分钟)?由于时钟偏差,可以返回此错误。如果是这种情况,更新您的时钟时间可能会解决此问题。
DocumentDB客户端使用主密钥和请求的时间戳来构造消息验证代码(MAC),以验证请求。出于安全原因,该服务拒绝在小时间窗口之外使用MAC的请求。
答案 4 :(得分:0)
我之前的答案已被删除(我相信,是由于错误或误解...)
您可以检查您是否尝试使用只读键提交写入操作。 尝试使用只读键进行写入会引发该异常。
如果您使用静态类或方法来生成图形客户端,则可能是您使用了只读键的客户端实例错误。