Azure WebJob是否可以针对不同的发布配置文件使用App.config转换?

19

我工作的地方需要根据需要创建Azure Web网站和SQL数据库,并为测试和生产环境创建相应的实例。我们为每个发布配置文件创建一个web.config转换,以便将数据库连接字符串更改为与该网站关联的数据库。

现在,我正在尝试创建一个Azure WebJob,它需要对数据库进行更新。我通过右键单击Web应用程序项目并选择添加新的Azure WebJob来创建它。

为了使其按照我的要求运行,我需要的是指向Web App使用的同一数据库的SQL数据库连接字符串。我知道这些可以在Azure门户中设置并使用配置管理器获取,但我更愿意将其放在WebJob的App.config中,并根据需要进行转换。

我尝试使用Slow Cheetah完成此操作,但似乎只能为Debug和Release配置文件进行转换。

我开始按照此博客中指定的步骤操作: http://gunnarpeipman.com/2013/11/using-web-config-transforms-with-app-config-files/

它告诉您如何手动编辑.csproj文件以启用App.config转换。但是,这不是更好的解决方案,因为您必须手动编辑每个需要转换的项目文件。

有人能告诉我如何做到这一点吗?这有可能吗?或者是否有一种方法可以共享我的Web应用程序的web.config文件中将转换为我需要的值的值?


你是否正在使用CI环境?如果是,你可以创建多个构建配置(例如Dev、Staging),并创建一个脚本,在每次构建时运行以修改App.config文件中的任何内容。如果需要更多信息,请告诉我,我会发布完整的答案。 - Maria Ines Parnisari
1
我们还没有使用CI环境,但很快就会使用。这是一个相当不错的想法,但我们找到了另一种解决方案来满足我的需求。我意识到我根本不需要转换。Azure WebJob在ConfigurationManager.AppSettings中有网站名称。因此,我们根据需要将连接字符串放在app.config中的每个网站中,然后根据网站名称选择正确的连接字符串。感谢您抽出时间来帮助我! - Tyler Pohl
在配置管理器中无法创建更多的配置吗?我以前为 Web 应用程序创建了多个“发布”配置,唯一的目的是能够使用配置转换在发布时发布具有不同品牌和连接字符串的相同应用程序。 - idodev
2个回答

8
如@binard所建议,Slow Cheetah是创建web.config或app.config转换的好方法。一旦您创建了转换,还可以为特定配置预览转换。
我喜欢的方法是创建自定义配置,例如Dev和Prod,并使用“Slow Cheetah XML Transforms”扩展为Dev和Prod创建转换,而不是Debug和Release。
完成此步骤后,下一个挑战是确保Azure中的持续部署设置选择了正确的配置。为此,您必须在Azure门户中的“应用程序设置”部分设置与您的Azure Web App关联的配置。例如:
SCM_BUILD_ARGS=-p:Configuration=Dev

一旦设置完成,Azure中此Web App下的所有Webjobs将会使用父级Web App中指定的配置转换。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接