在按需转移完成后,您应该调用EndOnDemandTransfer方法。当开始按需传输,您通过OnDemandTransferOptions的方法:
var options = new OnDemandTransferOptions();
options.NotificationQueueName = "on-demand-notifications";
...
manager.BeginOnDemandTransfer(DataBufferName.Logs, options);
正如你可以从代码示例中看到的,您可以设置NotificationQueueName在OnDemandTransferOptions类。这是一旦按需传输完成就会收到消息的队列。您需要监视队列,阅读消息,最后在消息中找到EndOnDemandTranfer方法和RequestId。
这是此类信息的模样:
<OnDemandTransfers>
<Logs>
<NotificationQueueName>wad-transfer</NotificationQueueName>
<LevelFilter>Undefined</LevelFilter>
<From>2009-12-10T11:27:15.1376953Z</From>
<To>2009-12-10T11:32:15.1376953Z</To>
<RequestId>7352b663-ba11-413a-8db0-bca889ea84df</RequestId>
</Logs>
</OnDemandTransfers>
了解更多关于这对尼尔的博客:http://convective.wordpress.com/2009/12/10/diagnostics-management-in-windows-azure/
我怎么知道我已经“得到我所需要的数据”?我一直认为这只是一个持续的过程,可以获得任何过程输出的缓冲转储,因此它一直持续到角色停止。 – sharptooth
您在OnDemand案件中有同样的问题。如果你知道你想要的时间范围,那么很好,否则你需要不断地拉动,直到你看到你要找的东西。请记住,计划传输将所有缓冲数据从盒子中取出,而不仅仅是一个特定的时间范围。 – dunnry
是的,我知道所有数据都被推入存储。我的目标是将所有缓冲数据推送到存储中,以便前一次推送和离开RoleEntryPoint.OnStop()的代码之间的数据不会丢失。那么我该怎么做?无论我为预定转移指定的那段时间,我仍有可能丢失一些最新数据,并且数据可能包含某些可帮助调试某些关机问题的内容。 – sharptooth