XDT 转换删除错误条目
XDT transformation removes wrong entry
在 NuGet 中使用之前,我正在使用 this 网站测试我的 XDT 转换。当我有这个配置时
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</httpModules>
</system.web>
</configuration>
并使用此转换:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add name="ErrorLog" xdt:Transform="Remove" />
</httpModules>
</system.web>
</configuration>
结果是这样的输出:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</httpModules>
</system.web>
</configuration>
我不明白为什么条目 ApplicationInsightsWebTracking 被删除而不是 ErrorLog。在 NuGet 包中使用此转换时(删除包时),我得到了相同的结果。如何更改工作中的转换?
您还需要明确告诉 XDT 通过 name
属性进行匹配,使用 xdt:Locator="Match()"
,否则只会考虑元素 location/path 进行匹配(这就是为什么第一个add
元素最初被删除):
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add name="ErrorLog" xdt:Locator="Match(name)" xdt:Transform="Remove" />
</httpModules>
</system.web>
</configuration>
在 NuGet 中使用之前,我正在使用 this 网站测试我的 XDT 转换。当我有这个配置时
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</httpModules>
</system.web>
</configuration>
并使用此转换:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add name="ErrorLog" xdt:Transform="Remove" />
</httpModules>
</system.web>
</configuration>
结果是这样的输出:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</httpModules>
</system.web>
</configuration>
我不明白为什么条目 ApplicationInsightsWebTracking 被删除而不是 ErrorLog。在 NuGet 包中使用此转换时(删除包时),我得到了相同的结果。如何更改工作中的转换?
您还需要明确告诉 XDT 通过 name
属性进行匹配,使用 xdt:Locator="Match()"
,否则只会考虑元素 location/path 进行匹配(这就是为什么第一个add
元素最初被删除):
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add name="ErrorLog" xdt:Locator="Match(name)" xdt:Transform="Remove" />
</httpModules>
</system.web>
</configuration>