服务运行时中是否有任何地方可以告诉我当前是在“暂存”还是“生产”上运行?在生产环境中手动修改配置似乎有点麻烦。
当您处于 Prod 或 Staging 状态时,您确实不应该更改配置。暂存区域并非设计为“QA”环境,而只是部署生产之前的等待区域。
当您上传新部署时,您上传包的当前部署槽会被破坏,并且在上传和启动虚拟机时会关闭 10-15 分钟。如果您直接上传到生产环境,则会产生 15 分钟的生产停机时间。因此,临时区域就被发明了:您上传到临时环境,测试内容,然后单击“交换”按钮,您的临时环境就会神奇地变成生产环境(虚拟 IP 交换)。
因此,您的舞台表演应该与您的作品 100% 相同。
我认为您正在寻找的是质量保证/测试环境?您应该为测试环境开辟一个新服务,并拥有自己的生产/暂存。在这种情况下,您将需要维护多个配置文件集,每个部署环境(生产、测试等)一组。
有很多方法可以管理发生的配置地狱,特别是对于在 .config 文件之上还有自己的 *.cscfg 文件的 Azure。我更喜欢使用 Azure 项目执行此操作的方式如下:
设置一个小型配置项目,在那里创建与部署类型匹配的文件夹。在每个文件夹内设置与特定部署环境匹配的 *.config 和 *.cscfg 文件集:调试、测试、发布...这些文件也在 Visual Studio 中设置为构建目标类型。我有一个小的 xcopy 命令,在每次编译 Config 项目期间都会发生,它将所有文件从 Config 项目的 Build Target 文件夹复制到 Config 项目的根文件夹中。
然后,解决方案中的每个其他项目都会链接到 Config 项目根文件夹中的 .config 或 .cscfg 文件。
瞧,我的配置神奇地自动适应每个构建配置。我还使用 .config 转换来管理发布与非发布构建目标的调试信息。
如果您已经阅读了所有内容并且仍然想了解运行时的生产状态与暂存状态, 然后:
得到deploymentId
from RoleEnvironment.DeploymentId
然后使用管理API与适当的X509 certificate
到达Azure structure of your Service
并致电GetDeployments
方法(它是rest api,但有一个抽象库)。
希望这可以帮助
编辑:根据要求撰写关于配置字符串的设置和环境之间切换的博客文章@http://blog.paraleap.com/blog/post/Managing-environments-in-a-distributed-Azure-or-other-cloud-based-NET-solution
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)