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 ich możliwe przyczyny

Zasady XMLThreatProtection mogą wywoływać 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ą dozwoloną długość ciągu w tagu XML.
ChildCountExceeded Przekroczono maksymalną liczbę elementów podrzędnych dozwolonych w ładunku XML.
NodeDepthExceeded Maksymalna głębia elementów XML dozwolonych w ładunku XML została przekroczona.
AttributeCountExceeded Przekroczono maksymalną liczbę atrybutów w jednym elemencie.
AttributeNameExceeded Maksymalna dozwolona długość nazwy atrybutu została przekroczona.
AttributeValueExceeded Wartość atrybutu przekracza maksymalną dozwoloną długość.
TextExceeded Przekroczono maksymalną dozwoloną długość tekstu.
CommentExceeded przekroczono maksymalną dozwoloną długość komentarza;
PIDataExceeded Przekroczona została dozwolona długość danych instrukcji przetwarzania.
PITargetExceeded Przekroczono długość nazwy instrukcji procesu.
NSURIExceeded Przekroczono długość adresu URL przestrzeni nazw.
NSPrefixExceeded Przekroczono długość prefiksu przestrzeni nazw.
NSCountExceeded Przekroczono liczbę przestrzeni nazw w jednym elemencie.
Nieprawidłowy ładunek XML Dane XML są nieprawidłowe.

ElementNameExceeded

Kod błędu

steps.xmlthreatprotection.ExecutionFailed

Treść odpowiedzi na błąd

Ruch w czasie wykonywania 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, gdy ładunek wejściowy określony przez element <Source> w zasadach zawiera elementy XML, których długość przekracza maksymalną długość określoną w elemencie <Element> pod elementem <NameLimits>.

Jeśli na przykład element <Element> jest określony jako 5 w zasadzie XMLThreatProtection, ale ładunek wejściowy zawiera element o dłuższej nazwie niż 5 znaków, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę reguły XMLThreatProtection, numer wiersza i możliwą liczbę znaków w ładunku danych wejściowych, w którym została przekroczona długość elementu.

    Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1,, numer wiersza w pliku danych to 1, a możliwa liczba znaków 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ę z błędami (określoną w kroku 1) i zanotuj wartość określoną w elemencie <Element>.

    Na przykład w następującej regule XMLThreatProtection wartość <Element> jest ustawiona na 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) ładunku wejściowego i sprawdź, czy długość elementu w tym wierszu jest większa niż wartość określona dla elementu <Element> (określona w kroku 2). Jeśli długość elementu przekracza tę wartość, jest to przyczyną błędu.

    Oto przykładowy ładunek:

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

    Dane XML pokazane powyżej zawierają w wierszu 1 element rdzeniowy o nazwie company, który ma 7 znaków. Długość elementu jest większa niż 5 (wartość określona dla elementu <Element>), więc występuje 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 o nazwach elementów przekraczających zdefiniowaną wartość, należy spodziewać się komunikatu o błędzie. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak uznasz, że dłuższe elementy można określić w ładunku bez żadnych konsekwencji, zmień wartość <Element> na odpowiednią wartość zgodnie ze swoimi wymaganiami.

Jeśli np. uważasz, że możesz zezwolić na elementy o długości do 10 znaków, zmodyfikuj 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 wejściowy ładunek komunikatu określony przez element <Source> zawiera element XML, który zawiera więcej elementów podrzędnych niż wartość określona w elemencie <ChildCount> zasady.

Jeśli na przykład element <ChildCount> to 3, ale wejściowy ładunek XML zawiera element z większą liczbą elementów podrzędnych, pojawia się 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 pliku danych 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 przeszła weryfikacji (zidentyfikowaną w kroku 1), i zapisz wartość określoną w elemencie <ChildCount>.

    W poniższym przykładzie zasady <ChildCount> ma wartość 3(pamiętaj, że do tego limitu wliczają się komentarze, elementy uwzględnione i inne elementy):

    <?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 wiersz (zidentyfikowany w kroku 1) z danymi wejściowymi i sprawdź, czy liczba elementów podrzędnych (w tym wszystkie komentarze itp.) w danych wejściowych jest większa niż wartość określona dla elementu <ChildCount> (zidentyfikowanego w kroku 2). Jeśli liczba elementów podrzędnych przekracza liczbę podanych elementów, jest to przyczyną błędu.

    Oto przykładowy ładunek danych wejściowych:

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

    W pokazanym powyżej pliku XML wiersz 5 zawiera czwarty element podrzędny <director>elementu głównego <movie>. Ponieważ liczba elementów podrzędnych w wejściowym ładunku XML jest większa niż 3 (wartość określona dla elementu <ChildCount>), występuje 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 zasada XMLThreatProtection ma chronić przed ładunkami, których liczba elementów podrzędnych przekracza określony próg, to komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz podejmować żadnych dodatkowych działań.

Jeśli jednak uznasz, że w danych ładunku można uwzględnić większą liczbę elementów podrzędnych (w tym komentarzy itp.) bez żadnych konsekwencji, zmień wartość parametru <ChildCount> na odpowiednią, biorąc pod uwagę swoje wymagania.

Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 10 elementów podrzędnych, zmodyfikuj 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">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> w zasadach XMLThreatProtection.

Jeśli na przykład element <NodeDepth> jest określony w zasadach jako 4, ale głębokość węzła w danych wejściowych przekracza wartość 4, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym została przekroczona 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 pliku danych 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ź błędną zasadę XMLThreatProtection (określoną w kroku 1) i zanotuj wartość określoną w elemencie <NodeDepth>.

    W tym przykładzie reguły XMLThreatProtection wartość <NodeDepth> jest ustawiona na 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) z danymi wejściowymi i sprawdź, czy głębokość węzła podana w tym miejscu jest większa niż liczba podana w elemencie <NodeDepth> (określonym w kroku 2). Jeśli poziom elementów podrzędnych XML przekracza liczbę, to właśnie jest 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>
    

    Głębokość węzła widoczna powyżej w wierszu 6 to 6.Ponieważ głębokość węzła jest większa niż 5 (wartość określona dla elementu <NodeDepth>), występuje 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 zasada XMLThreatProtection ma chronić przed ładunkami z określonym progiem głębokości węzła, komunikat o błędzie jest oczekiwany. W tym przypadku nie musisz nic robić.

Jeśli jednak uznasz, że większa głębokość węzła może być dozwolona, zmień wartość parametru <NodeDepth> na odpowiednią wartość w zależności od wymagań.

Jeśli na przykład uważasz, że maksymalna głębokość węzłów to 10, zmodyfikuj 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>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 wejściowy ładunek komunikatu określony przez element <Source> zasady XMLThreatProtection zawiera dokument XML, w którym liczba atrybutów jednego elementu przekracza liczbę określoną w elemencie <AttributeCountPerElement> zasady.

Jeśli na przykład element <AttributeCountPerElement> jest określony jako 2 w zasadach XMLThreatProtection, ale ładunek wejściowy zawiera element z większą liczbą niż 2 atrybuty, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym została przekroczona liczba atrybutów. Na przykład w tym komunikacie o błędzie nazwa zasady to XMLThreat-Protection-1, a numer wiersza w pliku danych 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 przeszła weryfikacji (zidentyfikowaną w kroku 1), i zapisz wartość określoną w elemencie <AttributeCountPerElement>.

    W tym przykładzie zasad <AttributeCountPerElement> ma wartość 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) ładunku wejściowego i sprawdź, czy liczba podanych atrybutów przekracza liczbę określoną w elemencie <AttributeCountPerElementh> (określonym w kroku 2). Jeśli liczba atrybutów przekracza tę wartość, jest to przyczyną błędu.

    Oto przykładowy ładunek:

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

    Ładunek XML pokazany powyżej w wierszu 3 zawiera element z 3 atrybutami. Ponieważ liczba atrybutów jest większa niż 2 (wartość określona dla elementu <AttributeCountPerElement>), pojawia się 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 przekraczającymi określoną liczbę atrybutów, komunikat o błędzie jest oczekiwany. W tym przypadku nie musisz nic robić.

Jeśli jednak uznasz, że można dopuścić większą liczbę atrybutów, zmień wartość parametru <AttributeCountPerElement> na odpowiednią wartość zgodnie ze swoimi wymaganiami.

Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 5 atrybutów na element, zmodyfikuj 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>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> w zasadach XMLThreatProtection zawiera dokument XML, w którym nazwa atrybutu przekracza liczbę znaków określoną w podrzędnym elemencie <Attribute> elementu <NameLimits> w zasadach.

Jeśli na przykład element <Attribute> jest określony w zasadach jako 5, ale strumień danych wejściowych zawiera nazwę atrybutu składającą się z więcej niż 5 znaków, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady XMLThreatProtection i numer wiersza, w którym została przekroczona długość nazwy atrybutu. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w pliku danych 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 przeszła weryfikacji (zidentyfikowaną w kroku 1), i zapisz wartość określoną w elemencie <Attribute>.

    W tym przykładzie reguły XMLThreatProtection wartość <Attribute> jest ustawiona na 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 wiersz (zidentyfikowany w kroku 1) w danych wejściowych i sprawdź, czy długość atrybutu ma więcej znaków niż liczba podana w elemencie <Attribute> (zidentyfikowanym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, jest to przyczyną błędu.

    Oto przykładowy ładunek:

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

    Ładunek XML pokazany powyżej w wierszu 3 ma dwa atrybuty category i cuisine o długości odpowiednio 8 i 7 znaków. Ponieważ długość nazwy atrybutu jest większa niż 5 (wartość określona dla elementu <Attribute>), występuje ten 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órych długość przekracza określoną długość nazwy atrybutu, należy spodziewać się komunikatu o błędzie. W tym przypadku nie musisz nic robić.

Jeśli jednak uznasz, że dłuższa nazwa atrybutu może być dozwolona, zmień wartość <Attribute> na odpowiednią wartość w zależności od swoich wymagań.

Jeśli na przykład uważasz, że nazwy atrybutów mogą mieć maksymalnie 10 znaków, zmodyfikuj 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>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, gdy ładunek wiadomości wejściowej określony przez element <Source> w zasadach zawiera dokument XML, w którym wartość atrybutu przekracza liczbę znaków określoną w elementzie 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, pojawia się ten błąd.

Diagnostyka

  1. W komunikacie o błędzie sprawdź 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ź zasady, które nie przeszły weryfikacji (zidentyfikowane w kroku 1), i zapisz wartość określoną w elementach podrzędnych <Attribute> elementu <ValueLimits>.

    W tym przykładzie reguły 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 (zidentyfikowany w kroku 1) w danych wejściowych i sprawdź, czy długość wartości atrybutu ma więcej znaków niż liczba określona w elemencie <Attribute> (zidentyfikowanym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, 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>
    

    Dane XML pokazane powyżej w wierszu 3 zawierają atrybut (cuisine) o długości wartości 12 znaków. Ponieważ długość wartości atrybutu jest większa niż 10 (wartość określona dla elementu <Attribute>), pojawia się 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órych długość przekracza określoną długość atrybutu, to komunikat o błędzie jest oczekiwany. W tym przypadku nie musisz nic robić.

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

Jeśli na przykład uważasz, że możesz przypisać wartości mające maksymalnie 15 znaków, zmodyfikuj 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 strumień danych wiadomości wejściowej określony przez element <Source> polityki XMLThreatProtection zawiera dokument XML, w którym długość tekstu elementu przekracza liczbę znaków określoną w elementzie podrzędnym <Text> elementu <ValueLimits> polityki.

Jeśli na przykład element <Text> jest określony w zasadach jako 15, ale przesyłany ładunek ma tekst dłuższy niż 15 znaków, pojawia się ten błąd.

Diagnostyka

  1. W komunikacie o błędzie sprawdź 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 pliku danych 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ź zasady, które nie przeszły weryfikacji (zidentyfikowane w kroku 1), i zapisz wartość określoną w elementach podrzędnych <Text> elementu <ValueLimits>.

    W poniższym przykładzie zasady XMLThreatProtection <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 (zidentyfikowany w kroku 1) w danych wejściowych i sprawdź, czy długość wartości atrybutu ma więcej znaków niż liczba określona w elemencie <Text> (zidentyfikowanym w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, 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>
    

    Dane XML na linii 4 mają 53 znaki. Ponieważ długość wartości atrybutu jest większa niż 15 (wartość określona dla elementu <Text>), pojawia się 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 ładunkiem, który przekracza określoną długość tekstu, należy spodziewać się komunikatu o błędzie. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak uznasz, że dłuższe teksty są dozwolone, zmień <Text>element podrzędny elementu <ValueLimits> na odpowiednią wartość zgodnie z wymaganiami.

Jeśli na przykład uważasz, że wartości atrybutów mogą mieć maksymalnie 60 znaków, zmodyfikuj 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> w zasadach XMLThreatProtection zawiera dokument XML, w którym długość komentarza przekracza liczbę znaków określoną w podrzędnym elemencie <Comment> elementu <ValueLimits> w zasadach.

Jeśli na przykład element <Comment> jest określony w zasadach jako 10, ale strumień danych wejściowych zawiera komentarz o dłuższym niż 10 znaków, to błąd jest zgłaszany.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować 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 pliku danych 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ę z błędami (określoną w kroku 1) i zanotuj wartość określoną w elemencie podrzędnym <Comment> elementu <ValueLimits>.

    W tym przykładzie reguły XMLThreatProtection wartość <Comment> 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ź numer wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy długość komentarza nie zawiera więcej znaków niż liczba określona w elemencie <Comment> (podana w kroku 2). Jeśli liczba znaków przekracza wartość atrybutu, 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>
    

    Dane XML pokazane powyżej w wierszu 2 zawierają komentarz o długości 31 znaków.. Ponieważ długość komentarza przekracza 10 (wartość określona dla elementu <Comment>), pojawia się ten 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 przekraczającymi określoną długość komentarza, komunikat o błędzie jest oczekiwany. W tym przypadku nie musisz nic robić.

Jeśli jednak uznasz, że można używać dłuższego komentarza, zmień <Comment>element podrzędny elementu<ValueLimits> na odpowiednią wartość zgodnie z wymaganiami.

Jeśli na przykład uważasz, że wartości atrybutów mogą mieć maksymalnie 40 znaków, zmodyfikuj 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 wejściowy ładunek komunikatu określony przez element <Source> zasady XMLThreatProtection zawiera dokument XML, w którym instrukcja przetwarzania danych przekracza liczbę znaków określoną w elemencie podrzędnym <ProcessingInstructionData> elementu <ValueLimits> zasady.

Jeśli na przykład element <ProcessingInstructionData> jest określony jako 10 w zasadach XMLThreatProtection, ale ładunek wejściowy zawiera instrukcję przetwarzania zawierającą więcej niż 10 znaków, pojawia się 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 pliku danych 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ę z błędami (określoną w kroku 1) i zanotuj wartość określoną w elemencie podrzędnym <ProcessingInstructionData> elementu <ValueLimits> .

    W tym przykładzie reguły XMLThreatProtection wartość <ProcessingInstructionData> jest ustawiona na 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 (zidentyfikowany w kroku 1) z danymi wejściowymi i sprawdź, czy długość danych instrukcji przetwarzania określonych w tym miejscu zawiera więcej znaków niż liczba podana w elemencie <ProcessingInstructionData> (zidentyfikowanym w kroku 2). Jeśli liczba znaków przekracza dane w instrukcji przetwarzania, to jest to przyczyna błędu.

    Oto przykładowy ładunek:

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

    Dane XML pokazane powyżej w wierszu 1 zawierają 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 polityka XMLThreatProtection ma chronić przed ładunkami, które przekraczają określoną długość danych instrukcji przetwarzania, należy spodziewać się komunikatu o błędzie. W tym przypadku nie musisz nic robić.

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

Jeśli na przykład uważasz, że instrukcje przetwarzania danych mogą mieć maksymalnie 50 znaków, zmodyfikuj 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> polityki XMLThreatProtection zawiera dokument XML, w którym docelowa instrukcja procesu przekracza liczbę znaków określoną w elementzie podrzędnym <ProcessingInstructionTarget> elementu <NameLimits> polityki.

Jeśli na przykład element <ProcessingInstructionTarget> jest określony jako 10 w zasadach XMLThreatProtection, ale ładunek wejściowy ma docelowe instrukcje procesu zawierające więcej niż 10 znaków, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować nazwę reguły XMLThreatProtection i numer wiersza, w którym przekroczono liczbę docelową instrukcji przetwarzania. Na przykład w tym komunikacie o błędzie nazwa zasady to XML-Threat-Protection-1, a numer wiersza w pliku danych 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ź zasady XMLThreatProtection, które nie przeszły weryfikacji (zidentyfikowane w kroku 1), i zanotuj wartość określoną w elemencie podrzędnym <ProcessingInstructionTarget> elementu <NameLimits>.

    W tym przykładzie reguły XMLThreatProtection wartość <ProcessingInstructionTarget> 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>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) z danymi wejściowymi i sprawdź, czy długość określonego tam celu instrukcji przetwarzania zawiera więcej znaków niż liczba określona w elemencie <ProcessingInstructionTarget> (określonym w kroku 2). Jeśli liczba znaków przekracza docelowy limit rozmiaru, 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>
    

    Ładunek XML pokazany powyżej w wierszu 2 ma nazwę celu instrukcji przetwarzania „xml-stylesheet"” o długości 14 znaków. Nazwa celu instrukcji przetwarzania jest dłuższa niż 10 (wartość określona dla elementu <ProcessingInstructionTarget>), więc pojawia 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ą długość docelową instrukcji procesu, komunikat o błędzie jest oczekiwany. W tym przypadku nie musisz nic robić.

Jeśli jednak uznasz, że instrukcja procesu może być dłuższa, zmień element podrzędny <ProcessingInstructionTarget> elementu <NameLimits> na odpowiednią wartość zgodnie ze swoimi wymaganiami.

Jeśli na przykład uważasz, że instrukcje procesu mogą mieć maksymalnie 25 znaków, zmodyfikuj 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>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 URI NameSpace przekracza liczbę znaków określoną w podrzędnym elemencie <NamespaceURI> elementu <ValueLimits> zasad.

Jeśli na przykład element <NamespaceURI> jest określony w zasadach jako 10, ale ładunek wejściowy zawiera identyfikator URI przestrzeni nazw o dłużości większej niż 10 znaków, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby zidentyfikować 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 pliku danych 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ę z błędami (określoną w kroku 1) i zanotuj wartość określoną w elemencie podrzędnym <NamespaceURI> elementu <ValueLimits>.

    W tym przykładzie reguły XMLThreatProtection wartość <NamespaceURI> 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 wiersz (zidentyfikowany w kroku 1) z danymi wejściowymi i sprawdź, czy długość identyfikatora URI przestrzeni nazw ma więcej znaków niż liczba podana w elemencie <NamespaceURI> (zidentyfikowanym w kroku 2). Jeśli liczba znaków przekracza długość identyfikatora URI przestrzeni nazw, jest to przyczyna błędu.

    Oto przykładowy ładunek:

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

    Dane XML pokazane powyżej na linii 2 mają identyfikator URI przestrzeni nazw www.google.com/profile o długości 22 znaki. Identyfikator URI przestrzeni nazw jest dłuższy niż 10 (wartość określona dla elementu <NamespaceURI>), więc pojawia się 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 przekraczają określoną długość URI przestrzeni nazw, to wiadomość o błędzie jest oczekiwana. W tym przypadku nie musisz nic robić.

Jeśli jednak stwierdzisz, że można używać dłuższego identyfikatora URI przestrzeni nazw, zmień element podrzędny <NamespaceURI> elementu <ValueLimits> na odpowiednią wartość zgodnie z wymaganiami.

Jeśli na przykład uważasz, że długość URI przestrzeni nazw może wynosić maksymalnie 30 znaków, zmodyfikuj 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 przestrzeni nazw przekracza liczbę znaków określoną w elemencie podrzędnym <NamespacePrefix> elementu <NameLimits> polityki.

Jeśli na przykład w zasadach XMLThreatProtection element <NamespacePrefix> ma wartość 10, ale dane wejściowe zawierają prefiks przestrzeni nazw o dłużości większej niż 10 znaków, pojawia się ten błąd.

Diagnostyka

  1. Sprawdź komunikat o błędzie, aby znaleźć 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 pliku danych 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ź zasady, które nie przeszły weryfikacji (zidentyfikowane w kroku 1), i zapisz wartość określoną w podrzędnym elemencie <NamespacePrefix> elementu <NameLimits>.

    W tym przykładzie reguły XMLThreatProtection wartość <NamespacePrefix> 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>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) ładunku wejściowego i sprawdź, czy długość prefiksu przestrzeni nazw zawiera więcej znaków niż liczba znaków określona w elemencie <NamespacePrefix> (określony w kroku 2). Jeśli liczba znaków przekracza limit prefiksu przestrzeni nazw, 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>
    

    Ładunek XML pokazany powyżej w wierszu 2 ma prefiks przestrzeni nazw userprofile o długości 11 znaków. Długość prefiksu identyfikatora URI przestrzeni nazw jest większa niż 10 (wartość podana 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, należy spodziewać się komunikatu o błędzie. W tym przypadku nie musisz nic robić.

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

Jeśli na przykład uważasz, że prefiks URI przestrzeni nazw może mieć maksymalnie 15 znaków, zmodyfikuj 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 dane wejściowe wiadomości określone przez element <Source> w zasadach XMLThreatProtection zawierają dokument XML, w którym liczba przestrzeni nazw użytych w pojedynczym elemencie przekracza liczbę określoną w podrzędnym elemencie <NamespaceCountPerElement> elementu <StructureLimits> zasad.

Jeśli na przykład element <NamespaceCountPerElement> jest określony w zasadach jako 3, ale wejściowy ładunek ma element z większą liczbą niż 3 przestrzeni nazw, pojawia się 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 pliku danych 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ź zasady, które nie przeszły weryfikacji (zidentyfikowane w kroku 1), i zapisz wartość określoną w podrzędnym elemencie <NamespaceCountPerElement> elementu <StructureLimits>.

    W poniższym przykładzie zasady XMLThreatProtection <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 (określony w kroku 1) ładunku wejściowego i sprawdź, czy liczba przestrzeni nazw podanych w nim dla pojedynczego elementu nie jest większa niż liczba określona w elemencie <NamespaceCountPerElement> (określony w kroku 2). Jeśli liczba przestrzeni nazw przekracza limit liczby przestrzeni nazw na element, jest to przyczyną błędu.

    Oto przykładowy ładunek:

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

    Dane XML pokazane powyżej na linii 2 zawierają więcej niż 3 przestrzenie nazw. Ponieważ liczba przestrzeni nazw jest większa niż 3 (wartość określona dla elementu <NamespaceCountPerElement>), pojawia się ten komunikat o błędzie:

    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 na celu ochronę przed ładunkami przekraczającymi określoną liczbę przestrzeni nazw w jednym elemencie, powinien pojawić się komunikat o błędzie. W takim przypadku nie musisz nic więcej robić.

Jeśli jednak uznasz, że można dopuścić większą liczbę przestrzeni nazw, zmień element podrzędny <NamespaceCountPerElement> elementu <StructureLimits> na odpowiednią wartość zgodnie ze swoimi wymaganiami.

Jeśli na przykład uważasz, że w jednym elemencie możesz mieć maksymalnie 5 przestrzeni nazw, zmodyfikuj 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, gdy ł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 sprawdź, czy przekazany w ładunku dokument XML jest prawidłowo sformatowany.

    Oto przykładowy ładunek:

    <?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 przedstawionym powyżej pliku danych XML wiersz 9 nie zamyka prawidłowo elementu głównego, ponieważ brakuje znaku /. Ponieważ nie jest to poprawnie sformatowany kod XML, pojawia się błąd:

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

Rozdzielczość

Upewnij się, że prawidłowy ładunek danych XML jest przekazywany do dowolnego serwera proxy interfejsu API, który zawiera zasadę XMLThreatProtection.

Aby naprawić opisany powyżej błąd przykładowy, 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 to:

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

Ten błąd może wystąpić np. wtedy, gdy element <Source> w zasadzie ma wartość zmiennej, która nie istnieje w przepływie, w którym jest wykonywana zasada.

Diagnostyka

  1. Z komunikatu o błędzie ustal nazwę zasady XMLThreatProtection i nazwę zmiennej Source. Na przykład w tym komunikacie o błędzie nazwa zasady XMLThreatProtection to XML-Threat-Protection-1, a wartość zmiennej Source to requests:.

    XMLThreatProtection stepDefinition XML-Threat-Protection-1: Source requests
    is not available
    
  2. Sprawdź zasady XMLThreatProtection, które nie przeszły weryfikacji, i wartość elementu <Source> wskazanego w kroku 1.

    W tym przykładzie reguły 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 przepływie, w którym jest wykonywana zasada, pojawia się błąd:

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

Rozdzielczość

Upewnij się, że zmienna ustawiona w elemencie <Source> w zasadach XMLThreatProtection, które nie działają prawidłowo, ma wartość request, response lub message i występuje w przepływie, w którym działają zasady.

Aby poprawić przykładową zasadę widoczną powyżej, możesz zmodyfikować element <Source>, tak aby korzystał ze zmiennej request , ponieważ występuje ona w przepływie żą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, gdy element <Source> w zasadzie XMLThreatProtection ma wartość zmiennej, która nie jest typu Message.

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

Diagnostyka

  1. Z komunikatu o błędzie ustal nazwę zmiennej, która jest interpretowana jako zmienna 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 serwerze proxy interfejsu API, w których wystąpił błąd, i zidentyfikuj konkretną zasadę XMLThreadProtection, w której element <Source> ma nazwę zmiennej określoną w kroku 1 opisanym powyżej.

    W poniższym przykładzie zasady XMLThreatProtection <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>
    

    Zmienne message.content nie jest typu Message, dlatego pojawia się błąd:

    Variable message.content does not resolve to a Message
    

Rozdzielczość

Upewnij się, że element <Source> w nieudanej regule XMLThreatProtection jest ustawiony na zmienną przepływu typu Message, która istnieje w przepływie, w którym działa zasada.

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