当我尝试连接到模拟存储队列服务时,我收到以下错误:
在 HTTP 请求"..."中找到的 MAC 签名与任何计算签名不同。
确保授权标头的值格式正确,包括签名。
这是我用来连接到 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 按预期工作(。
知道吗?
在使用 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);