当前位置:  开发笔记 > 后端 > 正文

在开发和生产环境中使用不同的Web.config

如何解决《在开发和生产环境中使用不同的Web.config》经验,为你挑选了6个好方法。

我需要在ASP.NET应用程序中使用不同的数据库连接字符串和SMTP服务器地址,具体取决于它是在开发环境还是生产环境中运行.

应用程序通过WebConfigurationManager.AppSettings属性从Web.config文件中读取设置.

我使用Build/Publish命令通过FTP将应用程序部署到生产服务器,然后用正确的方法手动替换远程Web.config.

有可能以某种方式简化部署过程吗?谢谢!



1> Pierre-Alain..:

在Visual Studio 2010及更高版本中,您现在可以根据构建配置将转换应用于web.config.

创建web.config时,您可以在解决方案资源管理器中展开该文件,您将看到两个文件:

Web.Debug.Config

Web.Release.Config

它们包含可用于的转换代码

更改连接字符串

删除调试跟踪和设置

注册错误页面

有关详细信息,请参阅MSDN上的Web应用程序项目部署的Web.config转换语法.

尽管官方不支持,也可以将相同类型的转换应用于非Web应用程序app.config文件.请参阅Phil Bolduc博客,了解如何修改项目文件以向msbuild添加新任务.

这是对Visual Studio Uservoice的长期保留请求.

Visual Studio 2010及更高版本的扩展," SlowCheetah "可用于处理为任何配置文件创建转换.从Visual Studio 2017.3开始,SlowCheetah已集成到IDE中,代码库由Microsoft管理.这个新版本也支持JSON转换.


另请注意,web.confg仅转换PUBLISHING的工作,如果您只是构建/运行F5它们不起作用:((((
请注意,这不适用于旧的web**site**项目.仅适用于web**应用程序**.我没有试过看Phil Bolduc的解决方法是否适用于网站,但我怀疑它不会,因为它们没有项目文件.
如果你的web.config不包含`Web.Debug.Config`和`Web.Release.Config`,你可能需要右键单击`Web.Config`并单击`Add Config Transforms`.

2> Jason Slocom..:

web.config中的标记支持一个文件属性,该属性将使用自己的一组键/值加载外部配置.这些将覆盖您在web.config中的任何设置或添加到它们.

我们通过在安装时修改web.config并使用与安装站点的环境相匹配的文件属性来利用此功能.我们通过安装程序开关来完成此操作.

例如;






注意:

对属性指定的.config的更改不会触发重新启动asp.net工作进程


这是一个很好的答案,特别是当您拥有大量环境并且某些环境的某些设置具有您不希望在源代码管理中跟踪的密码和类似设置时.
有一个属性`restartOnExternalChanges`,它将这些文件视为web.configs.资料来源:https://learnable.com/books/the-asp-net-2-0-anthology-101-essential-tips-tricks-hacks/preview/how-can-i-simplify-my-web-config-文件a64852b

3> 小智..:

您是否已查看过Web部署项目?

http://www.microsoft.com/downloads/details.aspx?FamilyId=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&displaylang=en

如果您不在2008年,还有VS2005的版本.



4> harpo..:

我也想知道.这有助于我解决问题


然后我保留一个connectionStrings.config以及一个"{host} connectionStrings.config".这仍然是一个问题,但如果您对两个环境中不同的部分执行此操作,则可以部署和版本化相同的web.config.

(而且我不使用VS,顺便说一句.)



5> Jeff Sheldon..:

我使用NAnt构建脚本部署到我的不同环境.我根据它们被部署到的位置通过XPath修改我的配置文件,然后使用Beyond Compare自动将它们放入该环境中.

设置一两分钟,但您只需要执行一次.然后批处理文件接管我去另外一杯咖啡.:)

这是我在其上发现的一篇文章.



6> dariom..:

在一个拥有4个环境(开发,测试,分段和生产)的项目中,我们开发了一个系统,其中应用程序根据部署到的计算机名称选择适当的配置。

这对我们有用,因为:

管理员可以部署应用程序而无需开发人员参与(这是必需的),而不必摆弄配置文件(他们讨厌);

机器名称遵循约定。我们使用正则表达式匹配名称,并将其部署到环境中的多台计算机上;和

我们对连接字符串使用了集成安全性。这意味着我们可以在设计时将帐户名保留在配置文件中,而无需透露任何密码。

在这种情况下,它对我们来说效果很好,但可能不会在所有地方都起作用。

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有