当我对云部署的应用程序的设置文件(ServiceConfiguration.Cloud.cscfg)进行更改时,会发生什么顺序的事件?工作人员角色是否会重新启动,以便反映新的更改?(更改设置值时是否会触发OnStop、OnStart、Run事件?)
在我的云服务中,我从WorkerRole的Run()方法的配置文件中读取自定义值,并想知道对部署在云中的应用程序的ServiceConfiguration.Cloud.cscfg文件进行任何更改是否会重新触发OnStart和运行事件?
发布于 2012-12-19 05:18:39
是的,您的实例将在每次配置更改后通过OnStop /(重启)/ 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;
}
}https://stackoverflow.com/questions/13941467
复制相似问题