XMLThreatProtection 政策运行时错误问题排查

您正在查看 ApigeeApigee Hybrid 文档。
查看 Apigee Edge 文档。

ExecutionFailed

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition policy_name:
        Execution failed. Reason: error_description at line line_num
        (possibly around char char_num)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: Premature end of document while parsing at line 5(possibly  around char 0)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误类型和可能的原因

XMLThreatProtection 政策可以抛出许多不同类型的 ExecutionFailed 错误。 下表列出了不同类型的错误及其可能原因:

错误 原因
ElementNameExceeded 已超过 XML 标记中允许的最大字符串长度。
ChildCountExceeded 已超过 XML 载荷中允许的最大子元素数。
NodeDepthExceeded 已超过 XML 载荷中允许的 XML 元素的最大深度。
AttributeCountExceeded 已超过单个元素中的最大属性数。
AttributeNameExceeded 已超过属性名称允许的最大长度。
AttributeValueExceeded 已超过属性值允许的最大长度。
TextExceeded 已超过文本允许的最大长度。
CommentExceeded 已超过评论允许的最大长度。
PIDataExceeded 已超过允许的处理说明数据长度。
PITargetExceeded 已超过进程说明名称长度。
NSURIExceeded 已超过命名空间网址长度。
NSPrefixExceeded 已超过命名空间前缀长度。
NSCountExceeded 已超过单个元素中使用的名称空间数。
XML 载荷无效 输入 XML 载荷无效。

ElementNameExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

运行时流量返回 500 响应代码,并显示以下错误:

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition policy_name:
        Execution failed. reason: XMLThreatProtection stepDefinition policy_name:
        Element name length exceeded num at line line_num(possibly
        around char char_num)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Element name length exceeded 5 at line 1(possibly around char 9)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果政策的 <Source> 元素指定的输入载荷包含的 XML 元素超出 <NameLimits> 元素下 <Element> 元素中指定的长度上限,则会发生此错误。

例如,如果在在 XMLThreatProtection 政策中将 <Element> 元素指定为 5,但输入载荷的某个元素的长度超过 5 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以确定超出元素长度的输入载荷中的 XMLThreatProtection 政策名称、行号和可能的字符数。

    例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,,载荷中的行号为 1,可能的字符数为 9.

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Element name
    length exceeded 5 at line 1(possibly around char 9)
    
  2. 查看第 1 步中识别的失败政策并记下 <Element> 元素中指定的值。

    例如,在以下 XMLThreatProtection 政策中,<Element> 设置为 5

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>5</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>5</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查该行中元素的长度是否大于指定给 <Element> 元素的值(在第 2 步中识别)。如果元素的长度超过此值,则会导致错误。

    下面是一个输入载荷示例:

    <company>
      <name>Example</name>
      <country>USA</country>
    </company>
    

    上面显示的 XML 载荷在第 1 行有一个名为 company 的根元素,其长度为 7 个字符。由于该元素的长度大于 5(即指定给 <Element> 元素的值),因此会收到以下错误:

    XML-Threat-Protection-1: Execution failed. reason: XMLThreatProtection stepDefinition
    XML-Threat-Protection-1: Element name length exceeded 5 at line 1(possibly around char 9)
    

解决方法

如果 XMLThreadProtection 政策旨在防范元素名称超过定义值的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

不过,如果您确定可以在载荷中指定较长的元素而不会产生任何后果,请根据您的要求将 <Element> 修改为合适的值。

例如,如果您认为最多可以接受长度为 10 的元素,则按如下方式修改 XMLThreatProtection 政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>5</NodeDepth>
        <AttributeCountPerElement>2</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

ChildCountExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition policy_name:
        Execution failed. reason: XMLThreatProtection stepDefinition policy_name:
        Children count exceeded num at line  num(possibly
        around char num)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Children count exceeded 3 at line 5(possibly around char 89)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 <Source> 元素指定的输入消息载荷包含的 XML 元素中的子元素多于在政策的 <ChildCount> 元素中指定的值,则会发生此错误。

例如,如果 <ChildCount> 元素为 3,但输入 XML 载荷的某个元素包含 3 个以上的子元素,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及已超过条目计数的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 5

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Children
    count exceeded 3 at line 5(possibly around char 89)"
    
  2. 查看第 1 步中识别的失败政策并记下 <ChildCount> 元素中指定的值。

    在以下政策示例中,<ChildCount> 设置为 3(请注意,包含元素在内的注释和其他内容会计入此限额):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>5</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 中识别),并检查载荷中子元素(包括所有注释等)的数量是否大于指定给 <ChildCount> 元素的值(在第 2 步中识别)。如果子元素的数量超过了子元素计数,则会导致错误。

    下面是一个输入载荷示例:

    <movie>
      <title>Jurassic Park</title>
      <language>English</language>
      <country>USA</country>
      <director>Steven Spielberg</director>
    </movie>
    

    在上面显示的 XML 载荷中,第 5 行包含根元素 <movie> 的第四个子元素 <director>。由于输入 XML 载荷中的子元素计数大于 3(即指定给 <ChildCount> 元素的值),因此您会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Children
    count exceeded 3 at line 5(possibly around char 89)
    

解决方法

如果 XMLThreatProtection 政策旨在防范子元素计数超过特定阈值的载荷,则应该显示错误消息。在这种情况下,您不需要执行任何其他操作。

不过,如果您确定可以在载荷中添加大量子元素(包括注释等)而不会产生任何后果,请根据您的要求将 <ChildCount> 修改为合适的值。

例如,如果您认为最多可以接受 10 个子元素,请按如下方式修改 XMLThreatProtection 政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>5</NodeDepth>
        <AttributeCountPerElement>2</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">10</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

NodeDepthExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Node depth exceeded [num] at line [num](possibly around
        char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Node depth exceeded 5 at line 6(possibly around char 110)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 <Source> 元素指定的输入消息载荷包含 XML 文档,其中的节点层次结构超过在 XMLThreatProtection 政策的 <NodeDepth> 元素中指定的数量,则会发生此错误。

例如,如果在该政策中将 <NodeDepth> 元素指定为 4,但输入载荷的节点深度超过 4,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及已超过节点深度的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 6

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Node depth
    exceeded 5 at line 6(possibly around char 109)
    
  2. 查看第 1 步中识别的失败 XMLThreatProtection 政策并记下 <NodeDepth> 元素中指定的值。

    在以下 XMLThreatProtection 政策示例中,<NodeDepth> 设置为 5

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>5</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的节点深度计数是否大于 <NodeDepth> 元素中指定的数量(在第 2 步中识别)。如果 XML 子元素的级别超过该计数,则会导致错误。

    下面是一个输入载荷示例:

    <hellos>
       <hello1>
           <wave1>
                <wave2>
                    <wave3>
                        <wave4>
                           <wave5>wave</wave5>
                        </wave4>
                    </wave3>
                </wave2>
           </wave1>
       </hello1>
       <hello2>world2</hello2>
       <hello3>world3</hello3>
       <hello4>world4</hello4>
       <hello5>world5</hello5>
       <hello6>world6</hello6>
    </hellos>
    

    上面所示第 6 行的 XML 载荷节点深度为 6.,因为节点深度大于 5(即指定给 <NodeDepth> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Node depth
    exceeded 5 at line 6(possibly around char 109)
    

解决方法

如果 XMLThreatProtection 政策旨在防范具有特定节点深度阈值的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

不过,如果您确定可以接受更高的节点深度,请根据您的要求将 <NodeDepth> 修改为合适的值。

例如,如果您认为最多可以接受节点深度为 10,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>2</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

AttributeCountExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Attribute count exceeded [num] at line [num](possibly around
        char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Attribute count exceeded 2 at line 3(possibly around char 105)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个元素的属性数量超过该政策的 <AttributeCountPerElement> 元素中指定的数量,则会发生此错误。

例如,如果在 XMLThreatProtection 政策中将 <AttributeCountPerElement> 元素指定为 2,但输入载荷的某个元素包含 2 个以上的属性,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及已超过属性数目的行号。例如,在以下错误消息中,政策名称为 XMLThreat-Protection-1,载荷中的行号为 3

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Attribute
    count exceeded 2 at line 3(possibly around char 105)
    
  2. 查看第 1 步中识别的失败政策并记下 <AttributeCountPerElement> 元素中指定的值。

    在以下政策示例中,<AttributeCountPerElement> 设置为 2

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查指定的属性数目是否超过 <AttributeCountPerElementh> 元素中指定的数目(在第 2 步中识别)。如果属性数目超过该计数,则会导致错误。

    下面是一个输入载荷示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
      <book category="cooking" cuisine="Indian" lang="en">
        <title>Easy Indian Cooking</title>
        <author>Suneeta</author>
        <year>2004</year>
        <price>300.00</price>
      </book>
    </bookstore>
    

    上面所示第 3 行的 XML 载荷包含一个具有三个属性的元素。由于属性计数大于 2(即指定给 <AttributeCountPerElement> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Attribute
    count exceeded 2 at line 3(possibly around char 105)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超过特定数量的属性的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

不过,如果您确定可以接受更多属性,请根据您的要求将 <AttributeCountPerElement> 修改为合适的值。

例如,如果您认为最多可以接受每个元素具有 5 个属性,请按如下所示修改该政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

AttributeNameExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Attribute name length exceeded [num] at line [num](possibly around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Attribute name length exceeded 5 at line 3(possibly around char 105)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个属性名称长度超过该政策的 <NameLimits> 元素的 <Attribute> 子元素中指定的字符数,则会发生此错误。

例如,如果在该政策中将 <Attribute> 元素指定为 5,但输入载荷的属性名称长度超过 5 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及超过属性名称长度的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 3

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Attribute
    name length exceeded 5 at line 3(possibly around char 105)
    
  2. 查看第 1 步中识别的失败政策并记下 <Attribute> 元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<Attribute> 设置为 5

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的属性长度包含的字符数是否大于 <Attribute> 元素中指定的数量(在第 2 步中识别)。如果字符数超过该属性值,则会导致此错误。

    下面是一个输入载荷示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
      <book category="cooking" cuisine="Indian" lang="en">
        <title>Easy Indian Cooking</title>
        <author>Suneeta</author>
        <year>2004</year>
        <price>300.00</price>
      </book>
    </bookstore>
    

    上面所示第 3 行的 XML 载荷有两个属性(即 categorycuisine)的名称长度分别为 8 个字符和 7 个字符.,由于属性名称长度大于 5(即指定给 <Attribute> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Attribute
    name length exceeded 5 at line 3(possibly around char 105)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超过特定属性名称长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的属性名称长度,请根据您的要求将 <Attribute> 修改为合适的值。

例如,如果您认为属性名称的长度最多可以为 10 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

AttributeValueExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]: Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:  Attribute value length exceeded [num] at line [num](possibly around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Attribute value length exceeded 10 at line 3(possibly around char 111)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个属性值超过 <ValueLimits> 元素的 <Attribute> 子元素中指定的字符数,则会发生此错误。

例如,如果在 XMLThreatProtection 政策中将 <Attribute> 元素指定为 10,但输入载荷的属性值长度超过 10 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及已超过属性数目的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 3

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Attribute
    value length exceeded 10 at line 3(possibly around char 111)
    
  2. 查看第 1 步中识别的失败政策并记下 <ValueLimits> 元素的<Attribute> 子元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<Attribute> 设置为 10:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的属性值包含的字符数是否大于 <Attribute> 元素中指定的数量(在第 2 步中识别)。如果字符数超过该属性值,则会导致此错误。

    下面是一个输入载荷示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
      <book category="cooking" cuisine="South Indian" lang="en">
        <title>Easy Indian Cooking</title>
        <author>Suneeta</author>
        <year>2004</year>
        <price>300.00</price>
      </book>
    </bookstore>
    

    上面所示第 3 行的 XML 载荷包含一个值长度为 12 个字符的属性(类型)。由于属性值长度大于 10(即指定给 <Attribute> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Attribute
    value length exceeded 10 at line 3(possibly around char 111)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超过特定属性值长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的属性值,请根据您的要求将 <ValueLimits> 元素的 <Attribute> 子元素修改为合适的值。

例如,如果您认为属性值最多可以为 15 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

TextExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]: Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:  Text length exceeded [num] at line [num](possibly around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Text length exceeded 15 at line 4(possibly around char 66)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个元素的文本长度超过该政策的 <ValueLimits> 元素的 <Text> 子元素中指定的字符数,则会发生此错误。

例如,如果在该政策中将 <Text> 元素指定为 15,但输入载荷包含的文本长度超过 15 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及已超过属性数目的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 4

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Text length
    exceeded 15 at line 4(possibly around char 66)
    
  2. 查看第 1 步中识别的失败政策并记下 <ValueLimits> 元素的<Text> 子元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<Text> 设置为 15

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的属性值包含的字符数是否大于 <Text> 元素中指定的数量(在第 2 步中识别)。如果字符数超过该属性值,则会导致此错误。

    <food>
      <name>Veg Sandwich</name>
      <price>$5.95</price>
      <description>Vegetarian Sandwich with onions, tomatoes and lettuce</description>
      <calories>650</calories>
    </food>
    

    上面所示第 4 行的 XML 载荷包含长度为 53 个字符的文本。由于属性值长度大于 15(即指定给 <Text> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Text length
    exceeded 15 at line 4(possibly around char 66)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超过特定文本长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的文本长度,请根据您的要求将 <ValueLimits> 元素的 <Text> 子元素修改为合适的值。

例如,如果您认为属性值的长度最多可以为 60 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>60</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

CommentExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Comment length exceeded [num] at line [num](possibly around char
        [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Comment length exceeded 10 at line 2(possibly around char 48)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个评论长度超过该政策的 <ValueLimits> 元素的 <Comment> 子元素中指定的字符数,则会发生此错误。

例如,如果在该政策中将 <Comment> 元素指定为 10,但输入载荷包含的评论长度超过 10 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称和已超过评论长度的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 2

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Comment length exceeded 10 at line 2(possibly around char 48)
    
  2. 查看第 1 步中识别的失败政策并记下 <ValueLimits> 元素的<Comment> 子元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<Comment> 设置为 10

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的评论长度包含的字符数是否大于 <Comment> 元素中指定的数量(在第 2 步中识别)。如果字符数超过该属性值,则会导致此错误。

    下面是一个输入载荷示例:

    <food>
      <!--This is somewhat a long comment-->
      <name>Veg Sandwich</name>
      <price>$5.95</price>
      <description>Vegetarian Sandwich with onions, tomatoes and lettuce</description>
      <calories>650</calories>
    </food>
    

    上面所示第 2 行的 XML 载荷带有值长度为 31 个字符的评论.,由于评论长度大于 10(即指定给 <Comment> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Comment length
    exceeded 10 at line 2(possibly around char 48)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超过特定评论长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的评论,请根据您的要求将 <ValueLimits> 元素的 <Comment> 子元素修改为合适的值。

例如,如果您认为属性值最多可以为 40 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>40</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

PIDataExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Processing Instruction data length exceeded [num] at line
        [num](possibly around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Processing Instruction data length exceeded 30 at line 2(possibly around char 109)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个处理数据说明的长度超过该政策的 <ValueLimits> 元素的 <ProcessingInstructionData> 子元素中指定的字符数,则会发生此错误。

例如,如果在 XMLThreatProtection 政策中将 <ProcessingInstructionData> 元素指定为 10,但输入载荷包含的处理说明长度超过 10 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称和已超过处理说明长度的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 2

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Processing
    Instruction data length exceeded 30 at line 2(possibly around char 109)
    
  2. 查看第 1 步中识别的失败政策并记下 <ValueLimits> 元素的<ProcessingInstructionData> 子元素中指定的值。

    在以下 XMLThreatProtection 政策示例中,<ProcessingInstructionData> 设置为 30

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>30</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的处理说明数据长度包含的字符数是否大于 <ProcessingInstructionData> 元素中指定的数量(在第 2 步中识别)。如果字符数超过处理说明数据长度,则会导致错误。

    下面是一个输入载荷示例:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet type="text/xsl" href="mobilephones.xsl"?>
    <mobilephones>
      <mobilephone>
          <name>iPhone</name>
          <price>$600</price>
      </mobilephone>
      <mobilephone>
          <name>Samsung</name>
          <price>$500</price>
      </mobilephone>
    </mobilephones>
    

    上面所示第 1 行的 XML 载荷有一个处理说明数据元素(type="text/xsl" href="mobilephones.xsl"?)长度为 40 个字符.),因为此长度大于 30(即指定给 <ProcessingInstructionData> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Processing
    Instruction data length exceeded 30 at line 2(possibly around char 109)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超出特定处理说明数据长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的处理说明数据元素,请根据您的要求将 <ValueLimits> 元素的 <ProcessingInstructionData> 子元素修改为合适的值。

例如,如果您认为数据处理说明长度最多可以为 50 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>10</NamespaceURI>
        <Comment>40</Comment>
        <ProcessingInstructionData>50</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

PITargetExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Processing Instruction target length exceeded [num] at line [num](possibly around
        char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Processing Instruction target length exceeded 10 at line 2(possibly around char 114)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个处理说明目标的长度超过该政策的 <NameLimits> 元素的 <ProcessingInstructionTarget> 子元素中指定的字符数,则会发生此错误。

例如,如果在 XMLThreatProtection 政策中将 <ProcessingInstructionTarget> 元素指定为 10,但输入载荷包含的处理说明目标长度超过 10 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称和已超过处理说明目标数量的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 1

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Processing
    Instruction target length exceeded 10 at line 2(possibly around char 114)
    
  2. 查看第 1 步中识别的失败 XMLThreatProtection 政策并记下 <NameLimits 元素的<ProcessingInstructionTarget> 子元素中指定的值。

    在以下 XMLThreatProtection 政策示例中,<ProcessingInstructionTarget> 设置为 10

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>10</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>5</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>20</Text>
            <Attribute>15</Attribute>
            <NamespaceURI>40</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>30</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的处理说明目标长度包含的字符数是否大于 <ProcessingInstructionTarget> 元素中指定的数量(在第 2 步中识别)。如果字符数超过目标大小限额,则会导致错误。

    下面是一个输入载荷示例:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet type="text/xsl" href="mobilephones.xsl"?>
    <mobilephones>
      <mobilephone>
          <name>iPhone</name>
          <price>$600</price>
      </mobilephone>
      <mobilephone>
          <name>Samsung</name>
          <price>$500</price>
      </mobilephone>
    </mobilephones>
    

    上面所示第 2 行的 XML 载荷包含一个名称长度为 14 个字符的处理说明目标xml-stylesheet"。由于处理说明目标名称长度超过 10(即指定给 <ProcessingInstructionTarget> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Processing
    Instruction target length exceeded 10 at line 2(possibly around char 114)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超出特定处理说明目标长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的处理说明目标,请根据您的要求将 <NameLimits> 元素的 <ProcessingInstructionTarget> 子元素修改为合适的值。

例如,如果您认为处理说明目标的长度最多可以为 25 个字符,请按以下方式修改政策:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>15</NamespacePrefix>
    <ProcessingInstructionTarget>25</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>2</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>40</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
  </XMLThreatProtection>

NSURIExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]: Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:  Namespace uri length length exceeded [num] at line [num](possibly around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Namespace uri length exceeded 10 at line 2(possibly around char 97)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个命名空间 URI 长度超过该政策的 <ValueLimits> 元素的 <NamespaceURI> 子元素中指定的字符数,则会发生此错误。

例如,如果在该政策中将 <NamespaceURI> 元素指定为 10,但输入载荷包含的命名空间 URI 长度超过 10 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称和已超过命名空间 URI 长度的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 2

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace
    uri length exceeded 10 at line 2(possibly around char 97)
    
  2. 查看第 1 步中识别的失败政策并记下 <ValueLimits 元素的<NamespaceURI> 子元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<NamespaceURI> 设置为 10

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>5</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>2</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>15</Text>
            <Attribute>10</Attribute>
            <NamespaceURI>10</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>10</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的命名空间 URI 长度包含的字符数是否大于 <NamespaceURI> 元素中指定的数量(在第 2 步中识别)。如果字符数超过命名空间 URI 长度,则会导致错误。

    下面是一个输入载荷示例:

    <?xml version = "1.0" encoding = "UTF-8"?>
      <profile:user xmlns:profile = "www.example.com/profile">
      <profile:name>Rama Krishna</profile:name>
      <profile:company>Example</profile:company>
      <profile:phone>(91) 9876543210</profile:phone>
    </profile:user>
    

    上面所示为第 2 行显示的 XML 载荷有一个命名空间 URI http://www.example/profile,长度为 22 个字符。由于该命名空间 URI 长度大于 10(即指定给 <NamespaceURI> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace
    uri length exceeded 10 at line 2(possibly around char 99)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超出特定命名空间 URI 长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的命名空间 URI,请根据您的要求将 <ValueLimits> 元素的 <NamespaceURI> 子元素修改为合适的值。

例如,如果您认为命名空间 URI 的长度最多可以为 30 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>2</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>30</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

NSPrefixExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Namespace prefix length exceeded [num] at line [num](possibly
        around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Namespace prefix length exceeded 10 at line 2(possibly around char 105)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个命名空间 前缀长度超过该政策的 <NameLimits> 元素的 <NamespacePrefix> 子元素中指定的字符数,则会发生此错误。

例如,如果在 XMLThreatProtection 政策中将 <NamespacePrefix> 元素指定为 10,但输入载荷包含的命名空间前缀长度超过 10 个字符,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称和已超过命名空间 URI 前缀长度的行号。例如,在以下错误消息中,政策名称为 XML-Threat-Protection-1,载荷中的行号为 2

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace
    prefix length exceeded 10 at line 2(possibly around char 105)
    
  2. 查看第 1 步中识别的失败政策并记下 <NameLimits 元素的<NamespacePrefix> 子元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<NamespacePrefix> 设置为 10

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>10</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>5</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>20</Text>
            <Attribute>15</Attribute>
            <NamespaceURI>40</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>30</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中指定的命名空间前缀包含的字符数是否大于 <NamespacePrefix> 元素中指定的数量(在第 2 步中识别)。如果字符数超过命名空间前缀限额,则会导致错误。

    下面是一个输入载荷示例:

    <?xml version = "1.0" encoding = "UTF-8"?>
    <userprofile:user xmlns:userprofile = "www.example/profile">
      <userprofile:name>Rama Krishna</userprofile:name>
      <userprofile:company>Example</userprofile:company>
      <userprofile:phone>(011) 123-4567</userprofile:phone>
    </userprofile:user>
    

    上面所示第 2 行的 XML 载荷具有一个长度为 11 个字符的命名空间前缀 userprofile。由于该命名空间 URI 前缀长度大于 10(即指定给 <NamespacePrefix> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace
    prefix length exceeded 10 at line 2(possibly around char 105)
    

解决方法

如果 XMLThreatProtection 政策旨在防范超出特定命名空间 URI 前缀长度的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更长的命名空间 URI 前缀,请根据您的要求将 <NameLimits> 元素的 <NamespacePrefix> 子元素修改为合适的值。

例如,如果您认为命名空间 URI 前缀的长度最多可以为 15 个字符,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>5</Attribute>
        <NamespacePrefix>15</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>2</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>15</Text>
        <Attribute>10</Attribute>
        <NamespaceURI>40</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>10</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

NSCountExceeded

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. reason: XMLThreatProtection stepDefinition [policy_name]:
        Namespace count exceeded [num] at line [num](possibly around char [num])",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed. reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace count exceeded 3 at line 2(possibly around char 234)",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果由 XMLThreatProtection 政策的 <Source> 元素指定的输入消息载荷包含 XML 文档,其中某个元素中所用的命名空间数量超过该政策的 <StructureLimits> 元素的 <NamespaceCountPerElement> 子元素中指定的数量,则会发生此错误。

例如,如果在该政策中将 <NamespaceCountPerElement> 元素指定为 3,但输入载荷的某个元素包含 3 个以上的命名空间,则会引发此错误。

诊断

  1. 查看错误消息,以标识 XMLThreatProtection 政策名称以及已超过命名空间数目的行号。例如,在以下错误消息中,政策名称为 XMLThreat-Protection-1,载荷中的行号为 2

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace count
    exceeded 3 at line 2(possibly around char 234)
    
  2. 查看第 1 步中识别的失败政策并记下 <StructureLimits 元素的<NamespaceCountPerElement> 子元素中指定的值

    在以下 XMLThreatProtection 政策示例中,<NamespaceCountPerElement> 设置为 3

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>10</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>request</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>5</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>20</Text>
            <Attribute>15</Attribute>
            <NamespaceURI>40</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>30</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    
  3. 查看输入载荷的特定行号(在第 1 步中识别),并检查其中为某个元素指定的命名空间数量是否大于 <NamespaceCountPerElement> 元素中指定的数量(在第 2 步中识别)。如果命名空间的数量超过每个元素的命名空间计数限额,则会导致错误。

    下面是一个输入载荷示例:

    <?xml version = "1.0" encoding = "UTF-8"?>
    <hellos xmlns:h="https://www.w3schools.com/greeting1" xmlns:a="https://www.w3schools.com/greeting2" xmlns:b="https://www.w3schols.com/greeting3" xmlns:c="https://www.w3schools.com/greeting4">
        <a:hello1>world1</a:hello1>
        <b:hello2>world2</b:hello2>
        <c:hello2>world2</c:hello2>
        <h:hello2>world2</h:hello2>
    </hellos>
    

    上面所示第 2 行的 XML 载荷包含 3 个以上命名空间。由于命名空间计数大于 3(即指定给 <NamespaceCountPerElement> 元素的值),因此会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: XMLThreatProtection stepDefinition XML-Threat-Protection-1: Namespace
    count exceeded 3 at line 2(possibly around char 234)
    

解决方法

如果 XMLThreatProtection 政策旨在防范单个元素中超出特定数量的命名空间的载荷,则应该显示错误消息。在这种情况下,您无需执行任何其他操作。

但是,如果您确定可以接受更多命名空间,请根据您的要求将 <StructureLimits> 元素的 <NamespaceCountPerElement> 子元素修改为合适的值。

例如,如果您认为单个元素中最多可包含 5 个命名空间,请按以下方式修改政策:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>5</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>20</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>40</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>30</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

InvalidXMLPayload

错误代码

steps.xmlthreatprotection.ExecutionFailed

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition [policy_name]:
        Execution failed. Reason: [error_description]",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Execution failed. reason: Syntax error while parsing XML prologue",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
        }
    }
}

原因

如果 XMLProtectionPolicy 政策的 <Source> 元素指定的输入消息载荷不是有效的 XML 文档,就会出现此错误。

诊断

  1. 检查错误消息,以确定发生错误的政策名称。在以下示例中,政策名称为 XML-Threat-Protection-1

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: Syntax error while parsing XML prologue
    
  2. 检查输入载荷,并检查载荷中传递的 XML 文档是不是格式正确的 XML 文档。

    下面是一个输入载荷示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
      <book category="cooking">
        <title lang="en">Easy Indian Cooking</title>
        <author>Suneeta</author>
        <year>2004</year>
        <price>300.00</price>
      </book>
    <bookstore>
    

    在上面所示的 XML 载荷中,第 9 行未正确关闭根元素,因为缺少 /。由于它不是格式正确的 XML,因此您会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: Syntax error while parsing XML prologue
    

解决方法

确保将有效的输入 XML 载荷传递到包含 XMLThreatProtection 政策的任何 API 代理。

如需更正上面显示的示例错误,请按如下步骤修改输入 XML 载荷:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="cooking">
    <title lang="en">Easy Indian Cooking
    <author>Suneeta</author>
    <year>2004</year>
    <price>300.00</price>
  </book>
</bookstore>

SourceUnavailable

错误代码

steps.xmlthreatprotection.SourceUnavailable

错误响应正文

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition[policy_name]: Source[var_name] is not available"
        "detail": {
            "errorcode": "steps.xmlthreatprotection.SourceUnavailable"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "XMLThreatProtection stepDefinition XML-Threat-Protection-1:
        Source requests is not available",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.SourceUnavailable"
        }
    }
}

原因

如果在 XMLThreatProtection 政策的 <Source> 元素中指定的 message 变量出现下列其中一种情况,则会发生此错误:

  • 超出范围(在执行政策的特定流中不可用)
  • 不是 requestresponsemessage 有效值之一

例如,如果将政策中的 <Source> 元素设置为在执行政策的流中不存在的变量,就会发生此错误。

诊断

  1. 从错误消息中确定 XMLThreatProtection 政策名称以及来源变量的名称。例如,在以下错误消息中,XMLThreatProtection 政策名称为 XML-Threat-Protection-1,来源变量为 requests:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Source requests
    is not available
    
  2. 查看失败的 XMLThreatProtection 政策,并检查指定给在第 1 步中所识别 <Source> 元素的值。

    在以下 XMLThreatProtection 政策示例中,<Source> 元素设置为 requests

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>10</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>requests</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>5</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>20</Text>
            <Attribute>15</Attribute>
            <NamespaceURI>40</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>30</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    

    <Source> 元素的有效值为 requestresponsemessage.,因为 requests 不是有效的值,并且在执行政策的流中不存在,因此您会收到以下错误:

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Source requests
    is not available
    

解决方法

确保失败 XMLreatProtection 政策的 <Source> 元素中设置的变量设置为 requestresponsemessage,并且该变量在执行政策的流中存在。

如需更正上面所示的政策示例,您可以修改 <Source> 元素以使用 request 变量,因为它存在于请求流中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>request</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>20</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>40</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>30</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>

NonMessageVariable

错误代码

steps.xmlthreatprotection.NonMessageVariable

错误响应正文

{
    "fault": {
        "faultstring": "Variable var_name does not resolve to a Message"
        "detail": {
            "errorcode": "steps.xmlthreatprotection.NonMessageVariable"
        }
    }
}

错误响应正文示例

{
    "fault": {
        "faultstring": "Variable message.content does not resolve to a Message",
        "detail": {
            "errorcode": "steps.xmlthreatprotection.NonMessageVariable"
        }
    }
}

原因

如果将 XMLThreatProtection 政策的 <Source> 元素设置为非 message 类型的变量,则会出现此错误。

消息类型变量表示整个 HTTP 请求和响应。内置 Apigee 流变量 requestresponsemessage 都属于 Message 类型。如需详细了解消息变量,请参阅流变量参考文档

诊断

  1. 从错误消息中确定未解析为“消息”类型变量的变量名称。例如,在以下错误消息中,变量的名称为 message.content

    Variable message.content does not resolve to a Message
    
  2. 检查出现故障的 API 代理中的所有 XMLThreadProtection 政策并标识特定 XMLThreadProtection 政策,其中的 <Source> 元素是使用上述第 1 步中识别的变量名称指定的。

    在以下 XMLThreatProtection 政策示例中,<Source> 设置为 message.content

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
        <DisplayName>XML Threat Protection-1</DisplayName>
        <Properties/>
        <NameLimits>
            <Element>10</Element>
            <Attribute>10</Attribute>
            <NamespacePrefix>10</NamespacePrefix>
            <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
        </NameLimits>
        <Source>message.content</Source>
        <StructureLimits>
            <NodeDepth>10</NodeDepth>
            <AttributeCountPerElement>5</AttributeCountPerElement>
            <NamespaceCountPerElement>3</NamespaceCountPerElement>
            <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
        </StructureLimits>
        <ValueLimits>
            <Text>20</Text>
            <Attribute>15</Attribute>
            <NamespaceURI>40</NamespaceURI>
            <Comment>10</Comment>
            <ProcessingInstructionData>30</ProcessingInstructionData>
        </ValueLimits>
    </XMLThreatProtection>
    

    由于变量 message.content 不是 Message 类型,因此您会收到以下错误:

    Variable message.content does not resolve to a Message
    

解决方法

确保失败的 XMLThreatProtection 政策的 <Source> 元素被设为政策的某个流中存在的 message 流变量。

如需更正该政策,您可以修改 <Source> 元素来指定类型为 Message 的变量。例如,在失败的 XMLThreatProtection 中,您可以将 <Source> 元素指定为 message

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
    <DisplayName>XML Threat Protection-1</DisplayName>
    <Properties/>
    <NameLimits>
        <Element>10</Element>
        <Attribute>10</Attribute>
        <NamespacePrefix>10</NamespacePrefix>
        <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
    </NameLimits>
    <Source>message</Source>
    <StructureLimits>
        <NodeDepth>10</NodeDepth>
        <AttributeCountPerElement>5</AttributeCountPerElement>
        <NamespaceCountPerElement>3</NamespaceCountPerElement>
        <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
    </StructureLimits>
    <ValueLimits>
        <Text>20</Text>
        <Attribute>15</Attribute>
        <NamespaceURI>40</NamespaceURI>
        <Comment>10</Comment>
        <ProcessingInstructionData>30</ProcessingInstructionData>
    </ValueLimits>
</XMLThreatProtection>