1

当我更改云部署应用程序的设置文件 (ServiceConfiguration.Cloud.cscfg) 时发生的事件顺序是什么?工作人员角色是否会重新启动以反映新的更改?(是否会在更改设置值时触发 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 回答