向Azure存储队列发送消息时发生随机存储异常(并非总是如此)

时间:2015-06-12 09:28:25

标签: android exception azure-storage azure-storage-queues

当我尝试将一些消息发送到Azure存储的云队列时,我随机获得以下异常。我正在使用用于android的azure存储客户端库的0.5.1版本。我没有使用SAS,而是使用Azure帐户名称和密钥。请帮我解决这个问题。

  

com.microsoft.azure.storage.StorageException:服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。在com.microsoft.azure.sture.sture.storage.storage的com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:307)com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:181)上.queue.CloudQueue.exists(CloudQueue.java:887)位于com.microsoft.azure.storage.queue.CloudQueue.createIfNotExists(CloudQueue.java:526)com.microsoft.azure.storage.queue.CloudQueue.createIfNotExists(CloudQueue)的.java:501)

修改 这是导致异常的代码。正如我所说,它有时很好用,例外是随机发生的。

    try
    {
        // Retrieve storage account from connection-string.
        CloudStorageAccount storageAccount =
                CloudStorageAccount.parse(STORAGE_CONNECTION_STRING);

        // Create the queue client.
        CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

        // Retrieve a reference to a queue.
        CloudQueue queue = queueClient.getQueueReference(QUEUE);

        // Create the queue if it doesn't already exist.
        queue.createIfNotExists();

        // Create a message and add it to the queue.
        CloudQueueMessage message = new CloudQueueMessage(msg);
        queue.addMessage(message);
    }
    catch (Exception e)
    {
        // Output the stack trace.
        e.printStackTrace();
    }