CloudBlockBlob downloadBlockList有时会抛出存储异常(无法进行身份验证)

时间:2013-02-21 17:00:11

标签: java azure

我正在为我的服务实现一个分块上传解决方案,该解决方案在Azure中存储blob。这是用Clojure编写的,使用azure-sdk-for-java。我可以在块blob中上传和提交块作为块。但是,在上传任何块之前,必须执行一些验证。这包括检查用户到目前为止上传的内容与他们提供的内容范围(我们不允许重新上传块)。

为了完成这些检查,我使用CloudBlockBlob的方法,downloadBlockList根据需要获取有关已提交和未提交块的数据(以及在提交时获取阻止列表)。但在某些情况下,这会失败,并且我收到以下异常:“com.microsoft.windowsazure.services.core.storage.StorageException:服务器无法验证请求。请确保正确形成Authorization标头的值,包括签名“。

这很奇怪,因为如果我在上传一个块之后调用downloadBlockList,我就不会失败,但如果我调用该方法并且不上传,我会得到它(在某些情况下,但总是相同的情况)。如果我捕获异常并立即再次调用downloadBlockList,它可以正常工作。

我已经使用tcpdump来查看正在发送的标头,因为在某些论坛上人们已经提到x-ms-date被设置错误,但事实并非如此,并且没有任何看起来不正确。响应是403,并且抱怨请求中的MAC签名错误。

有没有人有任何想法为什么有时会发生这种情况,但如果我再次调用该方法,之后立即以相同的方式调用它?

1 个答案:

答案 0 :(得分:0)

我在Azure Storage SDK上工作。你能提供你提到的踪迹吗?如果可能的话,帐户名称/时间发生了这个错误,所以我可以在最后查看。您可以私下发送到Microsoft /.com的joegiard。

我们将使用调查结果更新stackoverflow社区的此线程。