带有Nodejs的Azure存储模拟器createQueueService错误

时间:2018-04-06 20:28:12

标签: node.js azure azure-storage azure-storage-queues

当我尝试连接到模拟存储队列服务时,我收到以下错误:

  

HTTP请求中的MAC签名“...”与任何计算签名不同。

     

确保正确形成Authorization标头的值,包括签名。

这是我用来连接azure存储的方法:

    var storageAccount = 'devstoreaccount1'
    var accessKey= 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='
    var azure = require('azure-storage');
    var queueSvc = azure.createQueueService(storageAccount,accessKey);

    queueSvc.createMessage('myqueue', "Hello world!", function(error, results, response){
      if(!error){
        // Message inserted
      }
    });

我还尝试使用以下连接字符串,但没有成功:

UseDevelopmentStorage=true

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

在生产环境中一切正常,问题只与模拟服务有关,特别是对于队列(模拟blob正在按预期工作)。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在使用SDK 2.8.1测试代码后,我已经重现了您的错误。

我使用queueSvc.logger.level = azure.Logger.LogLevels.DEBUG;从控制台获取详细日志。 此方法生成的请求uri为https://devstoreaccount1.queue.core.windows.net:443/myqueue/messages,用于在线访问名为devstoreaccount1的存储帐户。

访问存储模拟器:

var azure = require('azure-storage');
var devStoreCreds = azure.generateDevelopmentStorageCredentials();
var queueSvc = azure.createQueueService(devStoreCreds);