Azure DocumentDB – HTTP请求中找到的MAC签名与计算的签名不同

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

Microsoft.Azure.Documents.UnauthorizedException,message:{“错误”:[“在HTTP请求中找到的MAC签名与计算的签名不同。服务器使用字符串后签名 – ‘post \ ndocs \ nmo1oanohoga = \ nwed ,25二月2015 12:35:57 gmt \ n \ n’“]}

我怎么去报道这个和b)试图弄清楚发生了什么?

我们已经证实这是一个与北欧地区隔离的问题。 我们正在对已知帐户应用修补程序,并将很快部署修复程序。

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

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

要修复我已经改变了Uri方法。

之前:

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

现在:

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

缺乏关注或关心

FLW

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

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

在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... 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返回错误的错误消息。