Rozwiązywanie problemów z błędami w czasie działania zasad XMLThreatProtection

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

ExecutionFailed

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Rodzaje błędów i możliwe przyczyny

Zasady XMLThreatProtection mogą zgłaszać wiele różnych typów błędów ExecutionFailed. W tabeli poniżej znajdziesz różne typy błędów i ich możliwe przyczyny:

Błąd Przyczyna
ElementNameExceeded Przekroczono maksymalną długość ciągu znaków dozwoloną w tagu XML.
ChildCountExceeded Przekroczono maksymalną liczbę elementów podrzędnych dozwolonych w ładunku XML.
NodeDepthExceeded Przekroczono maksymalną dozwoloną głębokość elementów XML w ładunku XML.
AttributeCountExceeded Przekroczono maksymalną liczbę atrybutów w jednym elemencie.
AttributeNameExceeded Przekroczono maksymalną dozwoloną długość nazwy atrybutu.
AttributeValueExceeded Przekroczono maksymalną dozwoloną długość wartości atrybutu.
TextExceeded Przekroczono maksymalną dozwoloną długość tekstu.
CommentExceeded Przekroczono maksymalną dozwoloną długość komentarza.
PIDataExceeded Przekroczono dozwoloną długość danych instrukcji przetwarzania.
PITargetExceeded Przekroczono długość nazwy instrukcji procesu.
NSURIExceeded Długość adresu URL przestrzeni nazw została przekroczona.
NSPrefixExceeded Przekroczono długość prefiksu przestrzeni nazw.
NSCountExceeded Przekroczono liczbę przestrzeni nazw używanych w jednym elemencie.
Nieprawidłowy ładunek XML Wejściowy ładunek XML jest nieprawidłowy.

ElementNameExceeded

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

Ruch w czasie działania zwraca kod odpowiedzi 500 z tym błędem:

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wejściowy określony przez element <Source> zasad zawiera elementy XML, które przekraczają maksymalną długość określoną w elemencie <Element> pod elementem <NameLimits>.

Jeśli na przykład element <Element> jest określony jako 5 w zasadach XMLThreatProtection, ale ładunek wejściowy zawiera element, który ma więcej niż 5 znaków, zostanie zgłoszony ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection, numer wiersza i możliwy numer znaku w ładunku wejściowym, w którym przekroczono długość elementu.

    Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1,, numer wiersza w ładunku to 1, a możliwy numer znaku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie <Element>.

    Na przykład w tych zasadach XMLThreatProtection parametr <Element> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość elementu w tym wierszu jest większa niż wartość określona dla elementu <Element> (określonego w kroku 2). Jeśli długość elementu przekracza tę wartość, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <company>
      <name>Google</name>
      <country>USA</country>
    </company>
    

    W pokazanym powyżej ładunku XML element główny o nazwie company znajduje się w wierszu 1 i ma 7 znaków. Długość elementu jest większa niż 5 (wartość określona dla elementu <Element>), więc pojawia się ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreadProtection ma chronić przed ładunkami z nazwami elementów, które przekraczają zdefiniowaną wartość, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że w ładunku można określić dłuższe elementy bez żadnych konsekwencji, zmień wartość <Element>na odpowiednią na podstawie swoich wymagań.

Jeśli na przykład uważasz, że możesz zezwolić na elementy o długości do 10, zmień zasadę XMLThreatProtection w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zawiera element XML, który zawiera więcej elementów podrzędnych niż wartość określona w elemencie <ChildCount> zasad.

Jeśli na przykład element <ChildCount> ma wartość 3, ale wejściowy ładunek XML zawiera element z więcej niż 3 elementami podrzędnymi, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono liczbę wpisów. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie <ChildCount>.

    W tym przykładzie zasady <ChildCount> mają wartość 3(pamiętaj, że komentarze, elementy dołączane i inne elementy wliczają się do tego limitu):

    <?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. Sprawdź konkretny numer wiersza (zidentyfikowany w kroku 1) w ładunku wejściowym i zobacz, czy liczba elementów podrzędnych (w tym wszystkie komentarze itp.) w ładunku jest większa niż wartość określona dla elementu <ChildCount> (zidentyfikowanego w kroku 2). Jeśli liczba elementów podrzędnych przekracza liczbę elementów podrzędnych, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

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

    W pokazanym powyżej ładunku XML w wierszu 5 znajduje się czwarty element podrzędny <director> elementu głównego <movie>. Liczba elementów podrzędnych w wejściowym ładunku XML jest większa niż 3 (wartość określona dla elementu <ChildCount>), więc pojawia się ten błąd:

    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)
    

Rozdzielczość

Jeśli zasady XMLThreatProtection mają chronić przed ładunkami, w których liczba elementów podrzędnych przekracza określony próg, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz podejmować żadnych dodatkowych działań.

Jeśli jednak stwierdzisz, że w ładunku można umieścić większą liczbę elementów podrzędnych (w tym komentarzy itp.) bez żadnych konsekwencji, zmień wartość <ChildCount>na odpowiednią na podstawie swoich wymagań.

Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 10 elementów podrzędnych, zmień zasady XMLThreatProtection w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zawiera dokument XML, w którym hierarchia węzłów przekracza liczbę określoną w elemencie <NodeDepth> zasad XMLThreatProtection.

Jeśli na przykład element <NodeDepth> jest określony w zasadach jako 4, ale ładunek wejściowy ma głębokość węzła przekraczającą 4, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono głębokość węzła. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę XMLThreatProtection, która spowodowała błąd (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie <NodeDepth>.

    W tym przykładzie zasady XMLThreatProtection parametr <NodeDepth> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy głębokość węzła określona w tym wierszu ma większą wartość niż liczba podana w elemencie <NodeDepth> (określonym w kroku 2). Jeśli liczba elementów podrzędnych XML przekracza podaną wartość, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <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>
    

    W wierszu 6 powyższego ładunku XML węzeł ma głębokość 6.. Ponieważ głębokość węzła jest większa niż 5 (wartość określona dla elementu <NodeDepth>), pojawia się ten błąd:

    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)
    

Rozdzielczość

Jeśli zasady XMLThreatProtection mają chronić przed ładunkami o określonym progu głębokości węzła, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że można zezwolić na większą głębokość węzła, zmień wartość <NodeDepth> na odpowiednią wartość na podstawie swoich wymagań.

Jeśli na przykład uważasz, że możesz zezwolić na głębokość węzła do 10, zmień zasady w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> w zasadach XMLThreatProtection zawiera dokument XML, w którym liczba atrybutów pojedynczego elementu przekracza liczbę określoną w elemencie <AttributeCountPerElement> tych zasad.

Jeśli na przykład element <AttributeCountPerElement> jest określony jako 2 w zasadach XMLThreatProtection, ale ładunek wejściowy zawiera element z więcej niż 2 atrybutami, zostanie zgłoszony ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono liczbę atrybutów. Na przykład w tym komunikacie o błędzie nazwa zasady to XMLThreat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie <AttributeCountPerElement>.

    W tym przykładzie zasady <AttributeCountPerElement> są ustawione na 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i sprawdź, czy liczba określonych atrybutów przekracza liczbę określoną w elemencie <AttributeCountPerElementh> (określonym w kroku 2). Jeśli liczba atrybutów przekracza podaną wartość, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    W przykładzie powyżej w wierszu 3 znajduje się element z 3 atrybutami. Ponieważ liczba atrybutów jest większa niż 2 (wartość określona dla elementu <AttributeCountPerElement>), otrzymasz ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną liczbę atrybutów, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że można zezwolić na większą liczbę atrybutów, zmień wartość <AttributeCountPerElement> na odpowiednią wartość na podstawie swoich wymagań.

Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 5 atrybutów na element, zmień zasady w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zasady XMLThreatProtection zawiera dokument XML, w którym nazwa atrybutu przekracza liczbę znaków określoną w elemencie podrzędnym <Attribute> elementu <NameLimits> zasady.

Jeśli na przykład element <Attribute> jest określony w zasadach jako 5, ale ładunek wejściowy ma nazwę atrybutu dłuższą niż 5 znaków, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono długość nazwy atrybutu. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie <Attribute>.

    W tym przykładzie zasady XMLThreatProtection parametr <Attribute> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość atrybutu określonego w tym wierszu ma więcej znaków niż liczba podana w elemencie <Attribute> (określonym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    W pokazanym powyżej ładunku XML w wierszu 3 znajdują się 2 atrybuty category i cuisine, których nazwy mają odpowiednio 8 i 7 znaków.. Ponieważ długość nazwy atrybutu jest większa niż 5 (wartość określona dla elementu <Attribute>), pojawia się następujący błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną długość nazwy atrybutu, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że można zezwolić na dłuższą nazwę atrybutu, zmień wartość <Attribute> na odpowiednią na podstawie swoich wymagań.

Jeśli na przykład uważasz, że nazwy atrybutów mogą mieć maksymalnie 10 znaków, zmień zasady w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zasady zawiera dokument XML, w którym wartość atrybutu przekracza liczbę znaków określoną w elemencie podrzędnym <Attribute> elementu <ValueLimits>.

Jeśli na przykład element <Attribute> jest określony jako 10 w zasadach XMLThreatProtection, ale ładunek wejściowy ma wartość atrybutu zawierającą więcej niż 10 znaków, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono liczbę atrybutów. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zapisz wartość podaną w elemencie podrzędnym <Attribute> elementu <ValueLimits>.

    W tym przykładzie zasady XMLThreatProtection wartość <Attribute> jest ustawiona na 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość wartości atrybutu określonej w tym wierszu ma więcej znaków niż liczba podana w elemencie <Attribute> (określonym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    W pokazanym powyżej ładunku XML w wierszu 3 znajduje się atrybut (cuisine) o wartości składającej się z 12 znaków. Ponieważ długość wartości atrybutu jest większa niż 10 (wartość określona dla elementu <Attribute>), otrzymasz ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną długość wartości atrybutu, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że dłuższe wartości atrybutów mogą być dozwolone, zmień element podrzędny <Attribute> elementu <ValueLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli np. uważasz, że możesz przypisywać wartości o długości do 15 znaków, zmień zasadę w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zasad XMLThreatProtection zawiera dokument XML, w którym długość tekstu elementu przekracza liczbę znaków określoną w elemencie podrzędnym <Text> elementu <ValueLimits> zasad.

Jeśli na przykład element <Text> jest określony w zasadach jako 15, ale ładunek wejściowy zawiera tekst o długości ponad 15 znaków, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono liczbę atrybutów. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zapisz wartość podaną w elemencie podrzędnym <Text> elementu <ValueLimits>.

    W tym przykładzie zasady XMLThreatProtection parametr <Text> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość wartości atrybutu określonej w tym wierszu ma więcej znaków niż liczba podana w elemencie <Text> (określonym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, to jest to przyczyną błędu.

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

    W wierszu 4 powyższego kodu XML znajduje się tekst o długości 53 znaków. Długość wartości atrybutu jest większa niż 15 (wartość określona dla elementu <Text>), dlatego występuje ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną długość tekstu, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że można zezwolić na dłuższe teksty, zmień wartość elementu <Text>podrzędnego elementu <ValueLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli na przykład uważasz, że wartości atrybutów mogą mieć do 60 znaków, zmień zasadę w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zasad XMLThreatProtection zawiera dokument XML, w którym długość komentarza przekracza liczbę znaków określoną w elemencie podrzędnym <Comment> elementu <ValueLimits> zasad.

Jeśli na przykład element <Comment> jest określony w zasadach jako 10, ale w danych wejściowych znajduje się komentarz zawierający więcej niż 10 znaków, zostanie zgłoszony ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono długość komentarza. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zapisz wartość podaną w elemencie podrzędnym <Comment> elementu <ValueLimits>.

    W tym przykładzie zasady XMLThreatProtection parametr <Comment> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w wejściowym ładunku i zobacz, czy długość komentarza podana w tym wierszu ma więcej znaków niż liczba określona w elemencie <Comment> (określonym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <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>
    

    W wierszu 2 powyższego ładunku XML znajduje się komentarz o długości 31 znaków.. Ponieważ długość komentarza jest większa niż 10 (wartość określona dla elementu <Comment>), pojawia się następujący błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną długość komentarza, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że dłuższy komentarz może być dozwolony, zmień element <Comment>elementu<ValueLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli na przykład uważasz, że możesz przypisać wartości o długości do 40 znaków, zmień zasady w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zasad XMLThreatProtection zawiera dokument XML, w którym instrukcja przetwarzania danych przekracza liczbę znaków określoną w elemencie podrzędnym <ProcessingInstructionData> elementu <ValueLimits> zasad.

Jeśli na przykład element <ProcessingInstructionData> jest określony jako 10 w zasadach XMLThreatProtection, ale wejściowy ładunek zawiera instrukcję przetwarzania z więcej niż 10 znakami, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono długość instrukcji przetwarzania. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zapisz wartość podaną w <ProcessingInstructionData> elemencie podrzędnym elementu <ValueLimits> .

    W tym przykładzie zasady XMLThreatProtection parametr <ProcessingInstructionData> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość danych instrukcji przetwarzania określona w tym wierszu ma więcej znaków niż liczba podana w elemencie <ProcessingInstructionData> (określonym w kroku 2). Jeśli liczba znaków przekracza dane instrukcji przetwarzania, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    W pokazanym powyżej ładunku XML w wierszu 1 znajduje się element danych instrukcji przetwarzania (type="text/xsl" href="mobilephones.xsl"?)o długości 40 znaków.). Ponieważ ta długość jest większa niż 30 (wartość określona dla elementu <ProcessingInstructionData>), pojawia się ten błąd:

    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)
    

Rozdzielczość

Jeśli zasady XMLThreatProtection mają chronić przed ładunkami, które przekraczają określoną długość danych instrukcji przetwarzania, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że dłuższe elementy danych instrukcji przetwarzania mogą być dozwolone, zmień element podrzędny <ProcessingInstructionData> elementu <ValueLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli na przykład uważasz, że długość instrukcji przetwarzania danych może wynosić do 50 znaków, zmień zasady w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> w zasadach XMLThreatProtection zawiera dokument XML, w którym cel instrukcji przetwarzania przekracza liczbę znaków określoną w elemencie podrzędnym <ProcessingInstructionTarget> elementu <NameLimits> zasad.

Jeśli na przykład element <ProcessingInstructionTarget> jest określony jako 10 w zasadach XMLThreatProtection, ale wejściowy ładunek ma cel instrukcji przetwarzania z więcej niż 10 znakami, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono liczbę docelowych instrukcji przetwarzania. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę XMLThreatProtection, która nie została zastosowana (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie podrzędnym <ProcessingInstructionTarget> elementu <NameLimits>.

    W tym przykładzie zasady XMLThreatProtection parametr <ProcessingInstructionTarget> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość docelowego elementu instrukcji przetwarzania określonego w tym wierszu ma więcej znaków niż liczba podana w elemencie <ProcessingInstructionTarget> (określonym w kroku 2). Jeśli liczba znaków przekracza limit rozmiaru docelowego, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    W wierszu 2 powyższego kodu XML znajduje się nazwa instrukcji przetwarzania „xml-stylesheet"” o długości 14 znaków. Ponieważ nazwa elementu docelowego instrukcji przetwarzania jest dłuższa niż 10 znaków (wartość określona dla elementu <ProcessingInstructionTarget>), pojawi się ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną docelową długość instrukcji przetwarzania, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że docelowa instrukcja przetwarzania może być dłuższa, zmień element <ProcessingInstructionTarget>elementu <NameLimits> na odpowiednią wartość zgodnie z wymaganiami.

Jeśli na przykład uważasz, że instrukcje dotyczące procesu mogą mieć maksymalnie 25 znaków, zmień zasady w ten sposób:

  <?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> w zasadach XMLThreatProtection zawiera dokument XML, w którym identyfikator URI Namespace przekracza liczbę znaków określoną w elemencie podrzędnym <NamespaceURI> elementu <ValueLimits> zasad.

Jeśli na przykład element <NamespaceURI> jest określony w zasadach jako 10, ale ładunek wejściowy ma identyfikator URI przestrzeni nazw zawierający więcej niż 10 znaków, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono długość identyfikatora URI przestrzeni nazw. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie podrzędnym <NamespaceURI> elementu <ValueLimits>.

    W tym przykładzie zasady XMLThreatProtection parametr <NamespaceURI> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość identyfikatora URI przestrzeni nazw określonego w tym wierszu ma więcej znaków niż liczba podana w elemencie <NamespaceURI> (określonym w kroku 2). Jeśli liczba znaków przekracza długość identyfikatora URI przestrzeni nazw, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

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

    W linii 2 powyższego kodu XML znajduje się identyfikator URI przestrzeni nazw www.google.com/profile o długości 22 znaków. Ponieważ długość identyfikatora URI przestrzeni nazw jest większa niż 10 (wartość określona dla elementu <NamespaceURI>), otrzymasz ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekroczyły określoną długość identyfikatora URI przestrzeni nazw, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że dłuższy identyfikator URI przestrzeni nazw jest dopuszczalny, zmień element podrzędny <NamespaceURI> elementu <ValueLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli na przykład uważasz, że długość identyfikatorów URI przestrzeni nazw może wynosić do 30 znaków, zmień zasadę w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zawiera dokument XML, w którym prefiks Namespace przekracza liczbę znaków określoną w elemencie podrzędnym <NamespacePrefix> elementu <NameLimits> zasad.

Jeśli na przykład element <NamespacePrefix> jest określony jako 10 w zasadach XMLThreatProtection, ale ładunek wejściowy ma prefiks przestrzeni nazw zawierający więcej niż 10 znaków, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono długość prefiksu URI przestrzeni nazw. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie podrzędnym <NamespacePrefix> elementu <NameLimits>.

    W tym przykładzie zasady XMLThreatProtection parametr <NamespacePrefix> ma wartość 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. Sprawdź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość prefiksu przestrzeni nazw określonego w tym wierszu ma więcej znaków niż liczba podana w elemencie <NamespacePrefix> (określonym w kroku 2). Jeśli liczba znaków przekracza limit prefiksu przestrzeni nazw, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

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

    W wierszu 2 powyższego kodu XML znajduje się prefiks przestrzeni nazw userprofile o długości 11 znaków. Długość prefiksu identyfikatora URI przestrzeni nazw jest większa niż 10 (wartość określona dla elementu <NamespacePrefix>), więc pojawia się ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną długość prefiksu URI przestrzeni nazw, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że dłuższy prefiks URI przestrzeni nazw jest dopuszczalny, zmień element podrzędny <NamespacePrefix> elementu <NameLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli na przykład uważasz, że długość prefiksów identyfikatorów URI przestrzeni nazw może wynosić maksymalnie 15 znaków, zmień zasadę w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przykładowa treść odpowiedzi na błąd

{
    "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"
        }
    }
}

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> w zasadach XMLThreatProtection zawiera dokument XML, w którym liczba przestrzeni nazw używanych w jednym elemencie przekracza liczbę określoną w elemencie podrzędnym <NamespaceCountPerElement> elementu <StructureLimits> zasad.

Jeśli na przykład element <NamespaceCountPerElement> jest określony w zasadach jako 3, ale w danych wejściowych znajduje się element z więcej niż 3 przestrzeniami nazw, wystąpi ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady XMLThreatProtection i numer wiersza, w którym przekroczono liczbę przestrzeni nazw. Na przykład w tym komunikacie o błędzie nazwa zasady to XMLThreat-Protection-1, a numer wiersza w ładunku to 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. Sprawdź zasadę, która nie została spełniona (zidentyfikowaną w kroku 1), i zanotuj wartość podaną w elemencie podrzędnym <NamespaceCountPerElement> elementu <StructureLimits>.

    W tym przykładzie zasady XMLThreatProtection parametr <NamespaceCountPerElement> ma wartość 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. Sprawdź konkretny numer wiersza (zidentyfikowany w kroku 1) w ładunku wejściowym i zobacz, czy liczba przestrzeni nazw określonych w nim dla pojedynczego elementu jest większa niż liczba określona w elemencie <NamespaceCountPerElement> (zidentyfikowanym w kroku 2). Jeśli liczba przestrzeni nazw przekracza limit liczby przestrzeni nazw na element, to jest to przyczyną błędu.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    Ładunek XML pokazany powyżej w wierszu 2 zawiera więcej niż 3 przestrzenie nazw. Ponieważ liczba przestrzeni nazw jest większa niż 3 (wartość określona dla elementu <NamespaceCountPerElement>), otrzymasz ten błąd:

    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)
    

Rozdzielczość

Jeśli zasada XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną liczbę przestrzeni nazw w jednym elemencie, ten komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak stwierdzisz, że można zezwolić na większą liczbę przestrzeni nazw, zmień wartość elementu podrzędnego <NamespaceCountPerElement> elementu <StructureLimits> na odpowiednią wartość zgodnie z Twoimi wymaganiami.

Jeśli na przykład uważasz, że w jednym elemencie możesz mieć maksymalnie 5 przestrzeni nazw, zmień zasadę w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

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

Przykładowa treść odpowiedzi na błąd

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

Przyczyna

Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source> zasady XMLProtectionPolicy nie jest prawidłowym dokumentem XML.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady, w której wystąpił błąd. W tym przykładzie nazwa zasady to XML-Threat-Protection-1.

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Execution failed.
    reason: Syntax error while parsing XML prologue
    
  2. Sprawdź ładunek wejściowy i zobacz, czy dokument XML przekazany w ładunku jest prawidłowo sformatowanym dokumentem XML.

    Oto przykładowy ładunek wejściowy:

    <?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>
    

    W pokazanym powyżej ładunku XML w wierszu 9 nieprawidłowo zamknięto element główny, ponieważ brakuje znaku /. Ponieważ nie jest to poprawnie sformułowany plik XML, zobaczysz błąd:

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

Rozdzielczość

Upewnij się, że do każdego serwera proxy interfejsu API, który zawiera zasadę XMLThreatProtection, przekazywany jest prawidłowy wejściowy ładunek XML.

Aby naprawić opisany powyżej błąd, zmodyfikuj wejściowy ładunek XML w ten sposób:

<?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

Kod błędu

steps.xmlthreatprotection.SourceUnavailable

Treść odpowiedzi na błąd

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

Przykładowa treść odpowiedzi na błąd

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

Przyczyna

Ten błąd występuje, jeśli zmienna message określona w elemencie <Source> zasady XMLThreatProtection jest:

  • Poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady)
  • nie jest jedną z prawidłowych wartości request, response ani message;

Ten błąd występuje na przykład, gdy element <Source> w zasadach jest ustawiony na zmienną, która nie istnieje w przepływie, w którym zasady są wykonywane.

Diagnostyka

  1. Zidentyfikuj nazwę zasady XMLThreatProtection i nazwę zmiennej Source w komunikacie o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady XMLThreatProtection to XML-Threat-Protection-1, a zmienna Source to requests:.

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Source requests
    is not available
    
  2. Sprawdź, czy w nieudanej zasadzie XMLThreatProtection wartość elementu <Source> zidentyfikowanego w kroku 1 jest prawidłowa.

    W tym przykładzie zasady XMLThreatProtection element <Source> ma wartość 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>
    

    Prawidłowe wartości elementu <Source> to request, response lub message.. Ponieważ requests nie jest prawidłową wartością i nie występuje w procesie, w którym wykonywana jest zasada, pojawia się błąd:

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

Rozdzielczość

Sprawdź, czy zmienna ustawiona w elemencie <Source> nieudanej zasady XMLThreatProtection ma wartość request, response lub message i czy występuje w przepływie, w którym jest wykonywana zasada.

Aby poprawić powyższą zasadę, możesz zmodyfikować element <Source>, tak aby używał zmiennej request , ponieważ występuje ona w procesie żądania:

<?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

Kod błędu

steps.xmlthreatprotection.NonMessageVariable

Treść odpowiedzi na błąd

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

Przykładowa treść odpowiedzi na błąd

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

Przyczyna

Ten błąd występuje, jeśli element <Source> w zasadach XMLThreatProtection ma wartość zmiennej, która nie jest typu Message.

Zmienne typu wiadomości reprezentują całe żądania i odpowiedzi HTTP. Wbudowane zmienne przepływu Apigee Edge request, response i message są typu Message. Więcej informacji o zmiennych w wiadomościach znajdziesz w dokumentacji zmiennych.

Diagnostyka

  1. Z komunikatu o błędzie odczytaj nazwę zmiennej, która nie jest zmienną typu Message. Na przykład w tym komunikacie o błędzie nazwa zmiennej to message.content

    Variable message.content does not resolve to a Message
    
  2. Sprawdź wszystkie zasady XMLThreadProtection w proxy interfejsu API, w którym wystąpił błąd, i określ konkretną zasadę XMLThreadProtection, w której element <Source> jest określony z nazwą zmiennej zidentyfikowaną w kroku 1 powyżej.

    W tym przykładzie zasady XMLThreatProtection parametr <Source> ma wartość 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>
    

    Ponieważ zmienna message.content nie jest typu Message, pojawi się błąd:

    Variable message.content does not resolve to a Message
    

Rozdzielczość

Sprawdź, czy element <Source> w zasadach XMLThreatProtection, które nie zostały zastosowane, jest ustawiony na zmienną przepływu typu Message, która występuje w przepływie, w którym są wykonywane zasady.

Aby poprawić zasady, możesz zmodyfikować element <Source>, aby określić zmienną typu Message. Na przykład w przypadku nieudanej ochrony XMLThreatProtection możesz określić element <Source> jako 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>