我有两个用C#编写的Azure服务工作者角色。我需要从两个辅助角色所需的ServiceConfiguration.cscfg文件中加载一些配置。我创建了一个公共类,它读取配置参数并在两个角色中使用它。 在这两个角色中,我执行以下操作: 我在ServiceDefinition.csdef中添加了一个自定义属性,如下所示
<ConfigurationSettings>
<Setting name="CustomProperty"/>
</ConfigurationSettings>
并在ServiceConfiguration.Local.cscfg中设置一个值,如下所示
<ConfigurationSettings>
<Setting name="CustomProperty" value="local-value" />
</ConfigurationSettings>
在公共类的代码中,我尝试通过调用
来访问此属性CloudConfigurationManager.GetSetting("CustomProperty");
由于某种原因,这会在一个角色中返回null,并在另一个角色中返回正确的值。当它失败时,它会将以下消息写入输出。
Getting "CustomProperty" from ServiceRuntime: FAIL.
Getting "CustomProperty" from ConfigurationManager: FAIL.
当然,如果我将它添加到app.config,它会读取它,但这不是我想要做的。我试图通过调用
来访问该属性RoleEnvironment.GetConfigurationSettingValue("CustomProperty");
令人惊讶的是,它在两个角色中都有效并返回了正确的值。我需要使用方法&#34; CloudConfigurationManager.GetSetting&#34;因为它更标准,因为公共类也可以在从app.config读取配置的控制台应用程序中使用。导致CloudConfigurationManager.GetSetting失败的原因是什么,而不是配置文件中不存在该属性。