Asp.net Web部署删除IIS网站自定义配置

Asp.net Web部署删除IIS网站自定义配置,asp.net,asp.net-mvc,iis,iis-7.5,webdeploy,Asp.net,Asp.net Mvc,Iis,Iis 7.5,Webdeploy,我正在使用Web Deploy(来自VS2013)将ASP.NET MVC站点发布到IIS 7.5 我通过IIS管理器添加了一些URL重写规则和自定义HTTP响应头 问题是每次我部署新版本的站点时,这个额外的配置都会被删除 这是预期的行为还是有什么问题?如何在每次部署中保留这些自定义设置 更新 因此,我明白我需要将这些更改放在web.config中。我试图将它们放在Web.Release.config中,但它没有被添加到部署的Web.config中。我想我缺少了一些XDT:Transform规则

我正在使用Web Deploy(来自VS2013)将ASP.NET MVC站点发布到IIS 7.5

我通过IIS管理器添加了一些URL重写规则和自定义HTTP响应头

问题是每次我部署新版本的站点时,这个额外的配置都会被删除

这是预期的行为还是有什么问题?如何在每次部署中保留这些自定义设置

更新

因此,我明白我需要将这些更改放在
web.config
中。我试图将它们放在
Web.Release.config
中,但它没有被添加到部署的
Web.config
中。我想我缺少了一些
XDT:Transform
规则

这是我在
Web.Release.config
中得到的信息(是的,发布配置文件正在使用此版本配置)


将web.config的生成操作设置为“无”。这将防止每次发布时都部署该文件

编辑

要将整个节从web.release.config插入web.config,需要像这样添加xdt:Transform=“Insert”:

<system.webServer xdt:Transform="Insert">
        <rewrite>
          <rules>
            <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true">
              <match url="*" />
              <conditions>
                <add input="{HTTP_HOST}" pattern="mydomain.com" />
              </conditions>
              <action type="Redirect" url="http://www.mydomain.com/{R:0}" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>

好的,我知道我需要使用
XDT:Transform
在web.config中添加此自定义配置

我把它添加到
Web.Release.config
中,它成功了:

<system.webServer>
    <rewrite xdt:Transform="Insert">
      <rules>
        <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true">
          <match url="*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="mydomain.com" />
          </conditions>
          <action type="Redirect" url="http://www.mydomain.com/{R:0}" />
        </rule>
      </rules>
    </rewrite>
 </system.webServer>


这些更改是否放在部署的web.config中?如果您检查您的本地web.config和部署的web.config之间的差异(在进行更改之后),文件之间是否存在差异?@NoLifeKing No,正如我所说,这些更改是通过IIS管理器而不是web.config进行的。是否需要通过web.config进行更改?在IIS管理器中所做的更改将使用新值更改已部署的web.config。当然,更改的内容也有例外,并非所有内容都放在web.config中,但我确实希望部署web.config文件(我可能在那里添加了一些内容)。因此,似乎唯一的方法是直接在web.config上添加自定义配置,对吗?发布将始终覆盖目标web.config。无法合并这两个文件。您必须在本地web.config(primary或.Release.config)上的某个位置进行更改,发布才能使用正确的服务器设置推送所有更改。祝您现在一切顺利。我将把这些配置放在Web.Release.config中。谢谢。对不起,乔希,你能再检查一下我的答案吗?我已经更新了。我想我缺少了一些XDT转换规则…响应不够快。很高兴你明白了。
<system.webServer>
    <rewrite xdt:Transform="Insert">
      <rules>
        <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true">
          <match url="*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="mydomain.com" />
          </conditions>
          <action type="Redirect" url="http://www.mydomain.com/{R:0}" />
        </rule>
      </rules>
    </rewrite>
 </system.webServer>