Windows Azure VIP Swap,如何处理自定义web.config值?

ahm*_*wil 4 asp.net web-config azure

将新部署发布到Cloud Service的临时或生产环境很容易,但我想更频繁地使用VIP交换(交换生产和暂存部署).就我而言,我为每个环境都有不同的web.config值.例如,在暂存时,我的web.config可能具有:

<appSettings>
    <add key="ConnectionStringName" value="StagingConnectionString" />
    <add key="WCFServiceUrl" value="http://somelongGUID.cloudapp.net/" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

......在生产方面,我会:

<appSettings>
    <add key="ConnectionStringName" value="ProductionConnectionString" />
    <add key="WCFServiceUrl" value="http://prodservice.cloudapp.net/" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

发布到Staging或Production时,将使用基于Debug或Release的正确值转换web.config.但是当谈到Windows Azure门户上的VIP Swap时,我必须触发交换,然后远程进入每个实例并手动更改这些值(这绝对不是正确的方法).

有什么办法可以更好地处理这种情况?或者是否有更好,更灵活的解决方案来处理这些自定义配置值,而不是在web.config中使用它们(特别是在这种情况下)?

提前致谢.

Pau*_*ner 5

使用VIP交换被认为是在Web和辅助角色中促进登台生产的"标准"方式.它通过更改Azure路由以将"生产"URL指向"登台"角色实例并将"登台"URL指向"生产"角色实例来实现此交换.

在内部,角色不知道这种变化:它完全发生在托管过程的外部.

如果要以这种方式使用VIP交换,则应考虑将应用程序更改为不知道其主机环境,或者只要需要知道它就从主机读取信息.


在Azure中安排生产和暂存的方式,包应该都是相同的:两个实时配置.该功能旨在实现高可用性部署; 它不能满足将角色调用到不同服务所暗示的那种测试,具体取决于它是否是暂存部署.

你最好使用一个单独的角色来执行测试; 在使用当前生产部署进行切换之前,只应使用暂存来测试部署是否成功.