跨环境的Azure Web角色配置设置

时间:2013-07-03 13:30:44

标签: .net azure azure-web-roles azure-configuration web.config-transform

在Azure之前发布:

在使用Azure之前,我们只会在不同的环境(测试,登台和制作等)中使用只读配置文件。在发布期间,所有应用程序文件(无配置文件)都将部署到相关环境中。然后,应用程序文件将读取环境的配置文件,以获取连接字符串和其他特定于环境的详细信息。我认为这是一个非常标准的设置?

在Azure之后发布:

现在我们正在将我们的Web应用程序移动到Azure Web角色。 Web角色使用ServiceConfiguration.Cloud.cscfgServiceConfiguration.Local.cscfg个文件。

发布到云服务时,需要知道连接字符串。如果我们要发布到测试云服务,则需要相应地编辑ServiceConfiguration.Cloud.cscfg。如果我们要发布到临时或生产云服务,则需要进一步更改ServiceConfiguration.Cloud.cscfg

我更愿意在进行部署时从连接字符串中抽象开发人员AWAY。这可以防止指向错误环境的错误(这可能会产生巨大的影响)。怎么办呢?

我知道可以在Azure管理门户中更改这些配置设置,但是将此步骤包含在发布过程中意味着开发人员需要访问管理门户,这不是理想的情况,因为仍然存在误差(加上对管理门户的“开放”访问)。

更新

我发现您可以通过添加更多(和重命名)来管理您的服务配置文件:

enter image description here

然后通过选择正确的云服务(黑色)和正确的服务配置(红色箭头),开发人员不需要了解配置详细信息:

enter image description here

开发人员在部署到云服务时仍然存在选择错误服务配置的问题(但是这可能会自动进入脚本以防止这种情况发生?)

我的主要信息是环境类型(蓝色箭头)。这对我来说没用。

1 个答案:

答案 0 :(得分:5)

最好的办法是创建多个云部署项目,每个环境一个,以便每个项目都有不同的ServiceConfiguration。

在我的应用程序中,我有3个应用程序项目(1个WebRole和2个Worker Role)

然后我们有6个云部署项目,每个目标环境一个。每个部署项目都包含相同的Web角色&工作者角色,但有不同的cscfg& csdef档案。

Solution Organisation

在应用程序级别,app.config& web.config文件使用SlowCheetah通过配置转换进行处理。基本上,每个部署的配置管理器中都有不同的构建配置。所以我不仅仅是DebugRelease,而是DebugQAUatTestSAndbox,{{ 1}}