VS2012 WebDeploy发布Breaking Web.Config

时间:2012-12-07 04:39:19

标签: web-config visual-studio-2012 webdeploy

我有一个MVC3 Web应用程序项目,我从Visual Studio 2012开发和发布。这是最近迁移的VS2010项目。

我的web.config是使用<location inheritInChildApplications="false">标记设置的,因此在虚拟目录中运行的子应用程序不会进行设置。

我已经设置了一个WebDeploy发布配置文件,它在VS2010中运行良好,但在从VS2012发布时中断了我的应用程序。它在前面提到的<connectionStrings>标记之后添加了</location>节点,即使我的<connectionStrings>节点中已经有<location>个节点。由于配置文件无效,这会破坏应用程序。

我尝试从头开始重新创建配置文件但没有解决问题。

根据我在此处阅读的内容http://msdn.microsoft.com/en-us/library/dd465337.aspx,取消选中“Use this connection string at runtime”复选框应指示发布过程 NOT 添加连接字符串,但无论如何

如果我没有使用<location inheritInChildApplications="false">,我认为这不会是一个问题,因为连接字符串会被添加到正确的位置。

另请注意,如果我发布到文件系统而不是使用WebDeploy,则会正确创建已发布的Web.Config,并且不会添加额外的连接字符串节点。

此问题是否有任何已知的解决方法?

1 个答案:

答案 0 :(得分:1)

我怀疑,此问题与inheritInChildApplications属性有关。它可能是Visual Studio 2012 Web Deploy中的一个错误,即部署过程始终会将连接字符串添加到配置文件中,即使您没有告诉它。在我的情况下,它也添加了错误的位置,这破坏了我的应用程序。

要解决此问题,我只是停止使用该属性,并使用here列出的其中一个选项关闭配置继承。

我现在可以无错误地发布,但该过程仍然会将连接字符串添加到已部署的配置文件中。令人讨厌,但不是一个节目塞。