Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure DocumentDB-在HTTP请求中找到的MAC签名与计算的签名不同_C#_.net_Azure_Authorization_Azure Cosmosdb - Fatal编程技术网

C# Azure DocumentDB-在HTTP请求中找到的MAC签名与计算的签名不同

C# Azure DocumentDB-在HTTP请求中找到的MAC签名与计算的签名不同,c#,.net,azure,authorization,azure-cosmosdb,C#,.net,Azure,Authorization,Azure Cosmosdb,似乎是随机的,我无法从DocumentDB获取文档。我可以调试,有以下消息失败,然后再试一次,工作。如果这与我的MAC地址有关,我也尝试过在不同的工作站上使用相同的结果 Microsoft.Azure.Documents.UnauthorizedException,消息: {“Errors”:[“在HTTP请求中找到的MAC签名不是 与计算签名相同。服务器使用以下字符串进行签名- “post\ndocs\nmo1anohoga=\nwed,2015年2月25日12:35:57 gmt\n\n'”

似乎是随机的,我无法从DocumentDB获取文档。我可以调试,有以下消息失败,然后再试一次,工作。如果这与我的MAC地址有关,我也尝试过在不同的工作站上使用相同的结果

Microsoft.Azure.Documents.UnauthorizedException,消息: {“Errors”:[“在HTTP请求中找到的MAC签名不是 与计算签名相同。服务器使用以下字符串进行签名- “post\ndocs\nmo1anohoga=\nwed,2015年2月25日12:35:57 gmt\n\n'”}


我该如何进行a)报告这一点和b)试图弄清发生了什么?

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


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

我们已确认这是一个仅限于北欧地区的问题。 我们正在对已生效的已知帐户应用修补程序,并将很快部署修补程序


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

SDK的1.9版本中似乎存在一种特殊的回归,可能导致出现此错误。我理解这与最初的问题无关,但是如果你搜索这个错误,你会在这里登陆,所以我认为这将是一个发布它的合适地方

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

docClient.CreateDocumentCollectionQuery(
     UriFactory.CreateDocumentCollectionUri(DbName, CollectionName))
  .Where(c => c.Id == CollectionName).ToList().Any()
1.8中您将正确地获得
ResourceType集合是意外的

1.9中,您将获得
在HTTP请求中找到的MAC签名与计算的签名不同。服务器使用以下字符串签名…

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


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

我也遇到了同样的问题。但错误是我的

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

之前:

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

缺乏关注或关心


flw

我以前的答案被删除了(我相信是由于错误或误解…)

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


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

这是一个好主意,但不是,我的本地时间与消息中的时间非常接近。但是消息中的时间不是由我的本地时间生成的吗?将来也是如此。我需要知道的是遥远的时间,也许?已经说过,PC与windows time server同步,所以一切都应该正常。我以为MAC是我的MAC地址,但那里有一些首字母缩略词冲突。所以时间很有意思,但似乎一切都很好,还会有这样的事情发生吗?主密钥很好,因为它在某些时候可以工作。但并非总是如此。我们正在关注此问题-您是否可以通过电子邮件向我发送您的活动Id(来自响应标题):andrl{at}microsoft.com我可以确认运行cosmos db emulator的系统时钟必须与访问它的计算机相同。您必须更改服务器的时区,然后删除CosmosDBData文件夹并重新启动它(在user/appdata/local中)。这是一个痛苦的想法!我今天犯了这个错误。我在美国东部地区。我只得到了两次,现在似乎无法复制。这可能是我需要捕捉的间歇性事件吗?这里的MAC指的是一个。这是对每个请求执行的一点加密,以向Cosmos DB证明您发送了请求,并且您也知道秘密访问密钥(足够接近)。与网卡上使用的密码无关。
this._documentCollectionUri = UriFactory.CreateDocumentCollectionUri(this._dataBaseName, this._collectionName);