当我尝试连接到模拟存储队列服务时,我收到以下错误:
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正在按预期工作)。
有什么想法吗?
答案 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);