从web.config转换中删除特定的连接字符串

3

我在web.config文件中有几个连接字符串,希望在部署Web应用程序时使用web.config转换来删除它们。我发现MSDN页面谈到了web.config转换,但仅列出了一个“Remove”项,它只会删除第一个条目,或者是“RemoveAll”会删除所有连接字符串。是否有一种方法可以仅删除特定的连接字符串?

  <connectionStrings>
<add name="DB"
     connectionString="Data Source=; Initial Catalog=; User ID=; Password=;"
     providerName="System.Data.SqlClient" />
<add name="ErrorLog"
     connectionString="Data Source=; Initial Catalog=; User ID=; Password=;"
     providerName="System.Data.SqlClient" />
<add name="SiteFiles"
     connectionString="" />
<add name="FanFiles"
     connectionString="" />


你能发布一些你的web.config文件(只需使用...代替连接字符串),这样我就可以了解你的设置情况。我认为我可以提供帮助,但需要更多信息。 - rsbarro
@rsbarro 我添加了一些字符串。其中一些是数据库连接,另一些是在Azure上的文件存储连接。这只是其中的几个,我大约有20个字符串。其中5或6个仅用于开发。 - user1365911
1个回答

5

要按名称删除特定的连接字符串,您可以使用以下格式:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <connectionStrings>
    <add name="ErrorLog" xdt:Transform="Remove" xdt:Locator="Match(name)" />
    <add name="SiteFiles" xdt:Transform="Remove" xdt:Locator="Match(name)" />
  </connectionStrings>

</configuration>

上述转换的xml将删除ErrorLogSiteFiles连接字符串。它使用xdt:Locator属性匹配name属性。

你知道我可以检查转换是否成功的方法吗?我已经放入了新代码并进行了构建,但是当我在包含我的解决方案的DIR上执行Windows查找时,我没有看到任何新的web.config文件。 - user1365911
请查看此帖子:http://kfigy.blogspot.com/2010/03/making-visual-studio-2010-webconfig.html。它们默认情况下不会进行转换。我通常使用msbuild和构建脚本来应用转换。我发布的链接概述了一种在Visual Studio中使用AfterBuild任务应用转换的方法。无论如何,这可能是一个单独的问题... =] - rsbarro
谢谢,我快要完成我的网站的一个新页面了,所以今天当我发布我的新更新时,我会查看被推送到Azure的web.config文件。 - user1365911
不幸的是,那个不起作用。我收到了错误信息:“连接字符串参数不能为空或为空。” - user1365911
你能提供更多关于它为什么不起作用的细节吗?是否应用了任何转换(在部署的web.config与项目中的web.config之间是否有任何变化)?你是否将转换定义在单独的文件中?你是否已经成功地使用其他转换? - rsbarro
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接