部署到云时,无法将实体添加到node.js中的azure色存储表中?

我在node.js中使用socket.io在我的Azure云项目中实现聊天function。 在这里,我一直使用node.js将用户聊天logging添加到表格中。 它工作正常,当我在我的本地模拟器上运行它,但奇怪的是,当我部署到我的azure色的云,它不工作,它不吐出任何错误,所以它真的让人难以置信。 以下是我的代码。

var app = require('express')() , server = require('http').createServer(app) , sio = require('socket.io') , redis = require('redis'); var client = redis.createClient(); var io = sio.listen(server,{origins: '*:*'}); io.set("store", new sio.RedisStore); process.env.AZURE_STORAGE_ACCOUNT = "account"; process.env.AZURE_STORAGE_ACCESS_KEY = "key"; var azure = require('azure'); var chatTableService = azure.createTableService(); createTable("ChatUser"); server.listen(4002); socket.on('privateChat', function (data) { var receiver = data.Receiver; console.log(data.Username); var chatGUID1 = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); return v.toString(16); }); var chatRecord1 = { PartitionKey: data.Receiver, RowKey: data.Username, ChatID: chatGUID2, Username: data.Receiver, ChattedWithUsername: data.Username, Timestamp: new Date(new Date().getTime()) }; console.log(chatRecord1.Timestamp); queryEntity(chatRecord1); } function queryEntity(record1) { chatTableService.queryEntity('ChatUser' , record1.PartitionKey , record1.RowKey , function (error, entity) { if (!error) { console.log("Entity already exists") } else { insertEntity(record1); } }) } function insertEntity(record) { chatTableService.insertEntity('ChatUser', record, function (error) { if (!error) { console.log("Entity inserted"); } }); } 

它在我的本地模拟器上工作,但不是在云上,我发现一个实体的DateTimevariables在云表上创buildlogging时不应该为空。 但是我很确定传递时间戳的方式没问题,是吗? 任何其他的想法,为什么它可能在本地而不是在云上工作?

编辑:

我也得到这个错误,当我运行的socket.io服务器,但尽pipe这个错误的socket.iofunction工作正常,所以我不打扰关心它。 我不知道错误意味着什么。

 { [Error: connect ECONNREFUSED] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect' } 

夫妇的事情:

  • 您不需要设置时间戳记,插入logging时服务应该自动填充。

  • 在本地运行时,您可以将环境variables设置为Windows Azure存储帐户设置,并查看在开发人员框中运行时是否成功写入表。 不要在模拟器中运行,只需设置环境variables并直接使用node.exe运行应用程序。

你是在networkingangular色还是工作者angular色? 自从你提到模拟器以来,我假设它是一个云服务。 如果它是一个工作者angular色,可能需要添加一些工具来logging文件以协助debugging。 如果是Webangular色,则可以在应用程序的根目录中添加iisnode.yml文件,并在文件中使用以下行来启用stdout / stderr的日志logging:

 loggingEnabled: true 

这会将stdout / stderr捕获到Webangular色实例的e:或f:上的approot文件夹下的iislog文件夹。 您可以远程桌面到实例并查看日志,查看是否发生了成功插入的日志。

否则,从上面的代码中看不出什么是显而易见的。 类似的代码为我工作得很好。 我的testing代码的相关位可以在https://gist.github.com/Blackmist/5326756find。

希望这可以帮助。