在角色启动上更改Azure .cscfg设置

时间:2013-07-15 19:07:16

标签: azure configuration startup azure-web-roles

我正在尝试创建一个启动脚本或任务来更改cscfg文件中的配置设置,该配置设置在角色启动时执行。

我可以访问这些设置,但无法成功更改它们。我希望能够指出如何更改Role Start上的设置,或者甚至是否可能。

感谢。

编辑:我正在努力实现的目标

我正在尝试创建一项服务,以便更轻松地在Azure应用程序上配置配置值。现在,如果我想在7种不同的环境中更改相同的设置,我必须在7个不同的.cscfg文件中进行更改。

我的想法是我可以创建一个web服务,应用程序将查询其配置值。 Web服务将查找存储位置(如Azure Tables),并返回正确的配置值。这样,我只能编辑表中的一个值,并且可以更快地在正确的环境中进行更改。

我已经能够非常轻松地将其集成到部署脚本中(打包应用程序,获取设置,更改cscfg文件,部署)。问题是每次要更改设置时,都必须重新部署。

2 个答案:

答案 0 :(得分:1)

Black-o,鉴于您的愿望似乎是管理多个部署(30+)之间的连接设置,我建议您可以通过使用单独的配置存储来更好地满足您的需求。这可能是Azure存储(表,或者可能只是blob容器中的配置文件),关系数据库,甚至可能是外部配置服务。

这些选项只需要将最少量的信息放入cscfg文件中(足以指向配置存储并对其进行授权),并允许您并排维护所有详细设置。

一个简单示例可能使用单个存储帐户,将配置设置放入Azure表,并使用“部署”ID作为分区键。然后,部署的配置文件只需要存储位置的连接信息(除非您希望使用共享访问签名)及其部署ID。然后,可以在角色启动时检索配置设置,并在本地缓存它们以提高性能(在分布式内存缓存中,或者可能在每个实例的临时“本地存储”驱动器上)。

将所有这些结合在一起的代码不应该花费几个小时。如果您选择的配置提供程序不可用,请确保您还考虑了弹性。

答案 1 :(得分:0)

在运行时更改设置的唯一方法是通过Management API - 制作新设置并执行“更新部署”操作。这将是相当缓慢的,因为它尊重更新域。因此,根据您的实际问题,可能有更好的方法来解决它。