1

クラウドにデプロイされたアプリの設定ファイル (ServiceConfiguration.Cloud.cscfg) を変更すると、どのようなイベントが発生しますか? 新しい変更が反映されるように、worker ロールを再起動しますか? (設定値を変更すると、OnStop、OnStart、Run イベントがトリガーされますか?)

私のクラウド サービスでは、WorkerRole の Run() メソッドで構成ファイルからカスタム値を読み取り、クラウドにデプロイされたアプリの ServiceConfiguration.Cloud.cscfg ファイルを変更すると、OnStart と Run が再トリガーされるかどうか疑問に思います。イベント?

4

1 に答える 1

2

はい、確かに、インスタンスは、構成が変更されるたびに OnStop / (Reboot) / OnStart / Run を通過します。たとえば、アプリケーションの設定を静的変数に保存している場合は、これを実行できるようにすることをお勧めします。このようにして、再起動後にアプリケーションが再起動し、静的変数のすべての設定を再初期化する機会が得られます。

一方、インスタンスを再起動する場合は、この変更を自分で処理できます (設定をどこかにキャッシュしたか、それらの設定なしで静的オブジェクトを初期化した可能性があります)。RoleEnvironment.Changingイベントを処理して、再起動をトリガーする必要があります。

public override bool OnStart()
{
   RoleEnvironment.Changing += RoleEnvironmentChanging;

   return base.OnStart();
}

private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) 
{
   if ((e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange))) 
   {
      e.Cancel = true;
   }
}
于 2012-12-18T21:18:38.570 に答える