如何使用配置转换删除 ConnectionString

Posted

技术标签:

【中文标题】如何使用配置转换删除 ConnectionString【英文标题】:How to remove a ConnectionString using Config Transformations 【发布时间】:2012-02-13 18:45:08 【问题描述】:

我有一个包含多个 ConnectionStrings 的 Web.config

<connectionStrings>
    <add name="connStr1" connectionString="...
    <add name="ConnStr2" connectionString="...
    <add name="connStr3" connectionString="...

有没有办法使用配置转换来删除特定的连接字符串?类似的东西:

<connectionStrings>
    <xdt:Remove connStr2?

显然没有正确的语法,但你明白我的意思......

【问题讨论】:

【参考方案1】:

这将根据其名称删除特定的连接字符串。

<configuration>
  <connectionStrings> 
    <add name="ConnStr2" xdt:Transform="Remove" xdt:Locator="Match(name)" connectionString=" " /> 
  </connectionStrings> 
</configuration>

请注意,connectionString 值不是空字符串,而是一个空格。任何非空值都可以。

【讨论】:

“DefaultConnection-Web.config 连接字符串”参数不能为空或为空。当我将你的代码放在我的 web.release.config 中时,我得到了什么。有任何想法吗?谢谢 为什么需要connectionString 属性? xdt:Transform="Remove" 不应该只根据名称删除节点吗? @DmytroShevchenko & Leigh - 当我使用 hyke20 的示例时,我没有收到该错误,但如果我不使用 'connectionString' 属性,我会收到一条警告说它丢失了。 如果属性不存在,您可能会收到警告,但转换仍应正确应用。我个人使用connectionString="any" 让我清楚地知道,转换并不关心连接字符串的值是什么。【参考方案2】:

来自MSDN documentation的主题:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add xdt:Transform="Remove" />
  </connectionStrings>
</configuration>

Transform="Remove" 是您正在寻找的魔法。还有一个Transform="RemoveAll",您可以将其与特定的添加一起使用。

编辑

再想一想,您也可以将Locator attribute 与上面定义的Remove 结合起来,以限制您实际要删除的元素。

更明确:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add xdt:Transform="Remove" xdt:Locator="XPath(configuration/connectionStrings[@name='ConnStr2'])" />
  </connectionStrings>
</configuration>

或类似的应该可以工作。

【讨论】:

XPath 不起作用。正确的语法是下面@hyke20 提到的语法。要在线测试转换,您可以使用:webconfigtransformationtester.apphb.com 为什么要删除上面示例中的实际命名空间?它是:xmlns:xdt="schemas.microsoft.com/XML-Document-Transform"。完全:[schemas.microsoft.com/XML-Document-Transform">] @AlexanderRyanBaggett 这样做会限制代码的环境可移植性,这也是开始使用配置转换的原因。可能有办法做到这一点,但我建议提出一个新问题。

以上是关于如何使用配置转换删除 ConnectionString的主要内容,如果未能解决你的问题,请参考以下文章

WPF 中的配置管理器

如何从 C# 测试 sql 查询执行? [复制]

如何修复“ConnectionString 属性尚未初始化”

JavaFX - 如何保存用户设置/配置?

如何把txt转换成epub 转换器

Hibernate Update 在 HSQLDB 中转换删除/插入