偶尔我会在从DocumentDB请求文档时遇到UnauthorizedException。这个问题看起来类似于Azure DocumentDB - The MAC signature found in the HTTP request is not the same as the computed signature,所以我相信这个问题没有得到解决。
Microsoft.Azure.Documents.UnauthorizedException :
Message: "The MAC signature found in the HTTP request is not the same as the computed signature.
Request URI: rntbd://db5prdddc01-docdb-1.documents.azure.com:14245/apps/35e0fabb-e03e-48d4-90ad-7b91b63c0153/services/9bb95f7b-9ad6-4128-a66a-de68279d5124/partitions/44a24d42-a85c-42cc-98c4-fc8a733245ac/replicas/130953283548138839p/
**更新:**问题已修复,特别感谢Andrew Liu!
4条答案
按热度按时间6mw9ycah1#
很高兴听到你不再遇到这个问题:)
为了其他人的利益在这里发帖...
如果您看到类似的问题,则表示应用程序和数据库之间存在验证标头不匹配。这可能是多种原因造成的...包括验证密钥不正确、系统时钟不同步或生成验证标头的方式存在问题。
第一方文档数据库SDK
如果您使用的是DocumentDB的第一方客户端SDK之一-很可能是验证密钥不正确或系统时钟问题...
如果这些看起来不错,那么DocumentDB端有一个bug。如果您遇到问题-请与我联系(askcosmsdb {at}microsoft.com),并提供一些活动ID+时间戳+堆栈跟踪,我可以帮助您查找问题。
剩余API
头是相当棘手的放在一起...以下是一些技巧构造auth头:
dbs/MyDatabase/colls/MyCollection/docs/MyDocument
);而不仅仅是资源的id(例如MyDocument
)。请注意,路径区分大小写...而所有其他参数都应该是小写。+
需要编码为%2B
)。完整文档和示例代码,请参见:https://msdn.microsoft.com/en-US/library/azure/dn783368.aspx
4ktjp1zp2#
检查静态客户端方法。可能是您错误地使用了具有只读密钥的客户端。
尝试使用只读键写入会引发该异常。
ubof19bj3#
我在使用主连接字符串时遇到了同样的问题,当我将连接字符串更改为辅助连接字符串时,它对我有效。
5hcedyr04#
我们可以通过以下变通方案解决该问题:
在Azure门户-〉Azure Cosmos DB for MongoDB -〉-〉连接字符串中,将有
1.读写密钥
1.只读密钥
如果阅读add时出错,请使用只读密钥中的主连接字符串。如果写入add时出错,请使用读写密钥中的主连接字符串。
根据应用程序正在执行的操作来使用它