Azure ServiceBus令牌已过期

我正在使用NodeJS访问Azure ServiceBus,并在几天内运行良好。 突然之间,我开始接受一个错误

Subscription Deletion Error :Error: 401 - ExpiredToken: . TrackingId:xxxxxx-xxxxxxx,TimeStamp:4/8/2015 12:32:54 PM

我正在使用连接string连接到ServiceBus

 var azure = require('azure'); var serviceBusConnectionString = "Endpoint=sb://somens.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=mykey"; var serviceBusService = azure.createServiceBusService(serviceBusConnectionString); var rule = { deleteDefault: function () { serviceBusService.deleteRule(topicName, subscriptionName, azure.Constants.ServiceBusConstants.DEFAULT_RULE_NAME, rule.handleError); }, create: function () { var ruleOptions = { sqlExpressionFilter: subscriptionCriteria }; rule.deleteDefault(); serviceBusService.createRule(topicName, subscriptionName, filterName, ruleOptions, rule.handleError); }, handleError: function (error) { if (error) { console.log(error); } } } //rule serviceBusService.deleteSubscription(topicName, subscriptionName, function (error) { if (error) { console.log("Subscription Deletion Error :" + error); createMessageSubscription(); } else { console.log('Subscription deleted : ' + subscriptionName); createMessageSubscription(); } }); //deleteSubscription 

只有一个共享访问策略“RootManageSharedAccessKey”具有“pipe理,发送,收听”权限

这有什么可能是错的?

好的,当机器上的时间比当前时间早时,就会出现这个问题。

固定:

sudo service ntp stop sudo ntpdate -s time.nist.gov sudo service ntp start

如果你想把它放在/etc/rc.local中,使用下面的命令:

( /etc/init.d/ntp stop until ping -nq -c3 8.8.8.8; do echo "Waiting for network..." done ntpdate -s time.nist.gov /etc/init.d/ntp start )&

这应该更新启动时间,然后过期的令牌上的Azure错误将不会被抛出