配置转换,转换后无法识别的XML命名空间

时间:2019-05-30 14:45:30

标签: asp.net web.config-transform

我们的一个配置文件正在被奇怪地转换。

基本配置

Image.network('http://openweathermap.org/img/w/$weerImageString.png',),

发布配置(为简洁起见,已在项目中删除)

<?xml version="1.0"?>
<configuration >

</configuration>

运行构建后,最终配置的输出看起来很奇怪:

发布后的版本

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore xdt:Transform="Insert">
    <contentSearch>
      <configuration>
        <indexes>
          <index id="sitecore_web_index">
            <param desc="core" patch:instead="param[@desc='core']">#{IndexEnvironment}#_web_index</param>
          </index>
        </indexes>
        <indexes role:require="Standalone or ContentManagement">
          <index id="sitecore_master_index">
            <param desc="core" patch:instead="param[@desc='core']">#{IndexEnvironment}#_master_index</param>
          </index>

请注意如何将<?xml version="1.0"?> <configuration> <sitecore> <contentSearch> <configuration> <indexes> <index id="sitecore_web_index"> <param desc="core" d7p1:instead="param[@desc='core']" xmlns:d7p1="http://www.sitecore.net/xmlconfig/">ASHQA_web_index</param> </index> </indexes> <indexes d5p1:require="Standalone or ContentManagement" xmlns:d5p1="http://www.sitecore.net/xmlconfig/role/"> <index id="sitecore_master_index"> <param desc="core" d7p1:instead="param[@desc='core']" xmlns:d7p1="http://www.sitecore.net/xmlconfig/">ASHQA_master_index</param> </index> patch的定义分别更改为roled7p1

虽然这是有效的XML,但它在我们的应用程序中引起了问题,该应用程序解析XML并寻找d5p1patch的适当术语。

1 个答案:

答案 0 :(得分:1)

TL; DR

转换后的配置中需要的任何名称空间都需要在基本配置中定义。

基本配置更新

<?xml version="1.0"?>
<configuration xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:patch="http://www.sitecore.net/xmlconfig/">

</configuration>

即使基本配置不依赖这些命名空间,但如果不包含这些命名空间,它们也不会正确继承。这也可以按预期清理生成的配置的输出:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:patch="http://www.sitecore.net/xmlconfig/">
    <sitecore>
        <contentSearch>
            <configuration>
                <indexes>
                    <index id="sitecore_web_index">
                        <param desc="core" patch:instead="param[@desc='core']">#{IndexEnvironment}#_web_index</param>
                    </index>
                </indexes>
                <indexes role:require="Standalone or ContentManagement">
                    <index id="sitecore_master_index">
                        <param desc="core" patch:instead="param[@desc='core']">#{IndexEnvironment}#_master_index</param>
                    </index>