Azure SDK for Node - 每次通话都会获得400“无效的URL”

时间:2012-03-10 06:06:36

标签: node.js azure

我从下面的简单Node应用程序尝试连接到Azure blob存储的每次尝试都会导致400 Invalid URL错误。我已经验证了存储密钥(下面的'mykey'),并且直接从管理门户复制了存储帐户(下面的'myaccount'),并且存储帐户是正确的。有什么明显的错误吗?

var http = require('http');
var azure = require('azure');
var port = process.env.port || 1337;

var blobService = azure.createBlobService( 'myAccount', 'myKey');
var containerName = 'photos';

http.createServer(function serverCreated(req, res) {
    blobService.createContainerIfNotExists(containerName, null, 
                                           containerCreatedOrExists);

    function containerCreatedOrExists(error)
    {
        res.writeHead(200, { 'Content-Type': 'text/plain' });

        if(error === null){
            res.write('Using container ' + containerName + '\r\n');     

            blobService.listBlobs(containerName, null, blobsListed);
        } else {
            res.end('Could not use container: ' + error.Code);
            console.log(error);
        }
    }

    function blobsListed(error, blobList)
    {
        if(error === null){
            res.write('Successfully listed blobs in ' + containerName + 
                      ':\r\n');
            for(var index in blobList){
                res.write(blobList[index].name + ' ');
            }
            res.end();
        } else {
            res.end('Could not list blobs: ' + error.Code);
        }
    }
}).listen(port);

2 个答案:

答案 0 :(得分:1)

跟进注意到这个问题的解决方案。出于某种原因,我创建了错误的标题,其中包含\r\n。我把它清理干净,没有列出或发送blob的麻烦。

通过调用以下方式帮助调试Azure SDK for Node代码:

blobService.logger = new azure.Logger(azure.Logger.LogLevels.DEBUG);

让我清楚地看到了请求对象中的标题。

答案 1 :(得分:-2)

for management protal,你可以尝试

var blobService = azure.createBlobService( 'yourAccount', 'yourKey','http://blob.core.windows.net');