如何防止web.config在网站更新时使用webdeploy覆盖
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止web.config在网站更新时使用webdeploy覆盖相关的知识,希望对你有一定的参考价值。
我有一个c#网站,我一直通过iis7 / webdeploy进行部署,效果很好。问题是当我更新网站时,web.config文件被覆盖。此文件包含数据库连接和其他一些特定于其站点的设置。自发布以来,我一直在通过登录来更新他们的站点,复制web.config,重新运行导入,然后重新处理web.config。我忘记这样做了几次,这让我自己搞砸了,这会给我带来很多额外的工作。但是,现在我正在努力将Web界面作为自动部署的一部分,因此我需要弄清楚它为什么覆盖了网站的当前配置。
有谁知道为什么web.config被覆盖和/或如何修复它所以它不再那样做了?
谢谢!斯科特
使用Web部署时有两种选择:
- 参数
- Web.config转换
使用参数化时,您可以指定在部署程序包期间可以修改哪些设置。例如,您可以为连接字符串,WCF配置或应用程序设置创建参数。当管理员现在部署您的应用程序时,他们可以修改当前安装的所有设置。将一个程序包部署到多个环境时,此方法很有用。使用像XmlPoke这样的东西,你可以完全自动化这个过程。
有关如何使用参数的完整说明,请参阅:Reference for the Web Application Package。
Web.config转换在编译时完成。通过创建多个配置,您可以使用XSLT更改web.config文件中的值。构建程序包时会应用这些更改。 SlowCheetah是一个很棒的工具,可以帮助您测试您的转换。通过创建特定配置(例如:暂存,测试,生产),您可以在部署管道中使用这些配置来正确配置所有设置。
有关如何使用web.config转换的更多信息,请参阅:Web.config Transformation Syntax for Web Project Deployment Using Visual Studio
参数化为您提供更多自由,但也更复杂。 Web.config转换易于使用,并且可以在您预先知道要部署到的环境时使用。
听起来您需要配置web.config转换。看看这里:
http://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx
将Web.config文件的“Build Action”更改为“None”对我有用。请记住,如果要部署到新计算机,则必须更改此设置。
以上是关于如何防止web.config在网站更新时使用webdeploy覆盖的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 IIS 默认站点 web.config 文件被虚拟目录继承?
IIS7,web.config 只允许在网站的 /uploads 目录中使用静态文件处理程序