如何防止web.config在网站更新时使用webdeploy覆盖

问题描述 投票:5回答:3

我有一个c#网站,我一直通过iis7 / webdeploy进行部署,效果很好。问题是当我更新网站时,web.config文件被覆盖。此文件包含数据库连接和其他一些特定于其站点的设置。自发布以来,我一直在通过登录来更新他们的站点,复制web.config,重新运行导入,然后重新处理web.config。我忘记这样做了几次,这让我自己搞砸了,这会给我带来很多额外的工作。但是,现在我正在努力将Web界面作为自动部署的一部分,因此我需要弄清楚它为什么覆盖了网站的当前配置。

有谁知道为什么web.config被覆盖和/或如何修复它所以它不再那样做了?

谢谢!斯科特

c# iis-7 webdeploy
3个回答
8
投票

使用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转换易于使用,并且可以在您预先知道要部署到的环境时使用。


2
投票

听起来您需要配置web.config转换。看看这里:

http://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx


0
投票

将Web.config文件的“Build Action”更改为“None”对我有用。请记住,如果要部署到新计算机,则必须更改此设置。

© www.soinside.com 2019 - 2024. All rights reserved.