Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.
ExecutionFailed
Fehlercode
steps.jsonthreatprotection.ExecutionFailed
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Arten von Fehlern und mögliche Ursachen
Die JSONThreatProtection-Richtlinie kann viele verschiedene Arten von ExecutionFailed-Fehlern auslösen. In der folgenden Tabelle sind die verschiedenen Fehlertypen und ihre möglichen Ursachen aufgeführt:
Fehlertyp | Ursache |
Länge des Namens eines Objekteintrags überschritten | Die maximal zulässige Stringlänge im Eintragsnamen eines Objekts wurde überschritten. |
Anzahl der Objekteinträge überschritten | Die maximal zulässige Anzahl an Einträgen in einem Objekt wurde überschritten. |
Anzahl der Array-Elemente überschritten | Die zulässige Höchstzahl von Elementen in einem Array wurde überschritten. |
Containertiefe wurde überschritten | Die maximal zulässige verschachtelte Tiefe wurde überschritten. |
Stringlänge überschritten | Die maximal zulässige Länge für einen Stringwert wurde überschritten. |
Ungültiges JSON-Objekt | Die eingegebene JSON-Nutzlast ist ungültig. |
Länge des Namens eines Objekteintrags überschritten
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry name length at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded object entry name length at line 2",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die vom Element <Source>
angegebene Nutzlastnachricht ein JSON-Objekt mit einem Attributnamen enthält, der die im Element <ObjectEntryNameLength>
angegebene maximale Länge überschreitet.
Wenn beispielsweise in der Richtlinie das Element <ObjectEntryNameLength>
als 5 angegeben ist, die Nutzlast der Eingabenachricht jedoch ein JSON-Attribut hat, dessen Name 5 Zeichen überschreitet, wird dieser Fehler ausgegeben.
Diagnose
Untersuchen Sie die Fehlermeldung, um den JSONThreatProtection-Richtliniennamen und die Zeilennummer zu ermitteln, in der der Name des langen Eintrags angegeben ist. In der folgenden Fehlermeldung lautet der Name der JSONThreatProtection-Richtlinie beispielsweise
JSON-Threat-Protection-1
und die Zeilennummer in der Nutzlast 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Untersuchen Sie die in Schritt 1 ermittelte Richtlinie und notieren Sie den im Element
<ObjectEntryNameLength>
angegebenen Wert.Zum Beispiel ist in der folgenden JSONThreatProtection-Richtlinie
<ObjectEntryNameLength>
auf5
gesetzt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>5</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Prüfen Sie die spezifische Zeilennummer (in Schritt 1) der Eingabenutzlast und prüfen Sie, ob die Objektname größer als der im
<ObjectEntryNameLength>
-Element (in Schritt 2 identifiziert). Wenn die Länge des Objektnamens diese Zahl überschreitet, ist dies die Ursache des Fehlers.Hier ist ein Beispiel für eine Eingabenutzlast:
{ "number" : 500, "string" : "text" }
Die oben angezeigte JSON-Nutzlast hat ein Attribut namens
number
in Zeile 2 mit sechs Zeichen (die Namenslänge ist 6). Da die Länge des Objektnamens größer als 5 (der für das Element<ObjectEntryNameLength>
angegebene Wert) ist, wird der folgende Fehler angezeigt:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Lösung
Wenn die JSONThreatProtection-Richtlinie vor Nutzlasten mit Objekteintragsnamen schützen soll, die den definierten Wert überschreiten, wird die Fehlermeldung erwartet. In diesem Fall sind keine weiteren Maßnahmen erforderlich.
Wenn Sie jedoch feststellen, dass in der Nutzlast längere Objekteintragsnamen angegeben werden, ändern Sie <ObjectEntryNameLength>
entsprechend Ihren Anforderungen auf einen geeigneten Wert.
Wenn Sie beispielsweise Objektnamen mit einer Länge von bis zu 10 Zeichen zulassen, ändern Sie die JSONThreatProtection-Richtlinie so:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>10</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Anzahl der Objekteinträge überschritten
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded object entry count at line 7",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die vom <Source>
- Element angegebene Nutzlastnachricht ein JSON-Objekt enthält, das mehr Einträge (Properties) als den im Element <ObjectEntryCount>
der Richtlinie angegebenen Wert enthält.
Wenn das <ObjectEntryCount>
-Element beispielsweise 5 ist, die JSON-Nutzlast jedoch mehr als fünf Einträge enthält, wird dieser Fehler ausgegeben.
Diagnose
Untersuchen Sie die Fehlermeldung, um den JSONThreatProtection-Richtliniennamen und die Zeilennummer zu ermitteln, in der die Eingabeanzahl überschritten wurde. In der folgenden Fehlermeldung lautet der Richtlinienname beispielsweise
JSON-Threat-Protection-1
und die Zeilennummer in der Nutzlast7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Notieren Sie sich den im Element
<ObjectEntryCount>
der Richtlinie (in Schritt 1) identifizierten Wert.Im folgenden Richtlinienbeispiel ist
<ObjectEntryCount>
auf5
festgelegt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>6</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Untersuchen Sie die in Schritt 1 ermittelte spezifische Zeilennummer der Nutzlast und prüfen Sie, ob die Anzahl der Entitäten in der Nutzlast größer ist als der Wert, der für das Element
<ObjectEntryCount>
(in Schritt 2 ermittelt) angegeben wurde. Wenn die Anzahl der Objekte die Anzahl der Objekteinträge überschreitet, ist dies die Fehlerursache.Hier ist ein Beispiel für eine Eingabenutzlast:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
In der oben gezeigten JSON-Nutzlast erfolgt der sechste Eintrag in Zeile 7 (Unternehmen). Da die Anzahl der Objekteinträge in der JSON-Nutzlast größer als 5 ist (der für das Element
<ObjectEntryCount>
angegebene Wert), erhalten Sie folgenden Fehler:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Lösung
Wenn die JSONThreatProtection-Richtlinie vor Nutzlasten mit einer Reihe von Objekteinträgen geschützt werden soll, die einen bestimmten Grenzwert überschreiten, ist die Fehlermeldung zu erwarten. In diesem Fall müssen Sie keine weiteren Maßnahmen ergreifen.
Wenn Sie jedoch feststellen, dass mehr Objekteinträge in die Nutzlast eingefügt werden können, ändern Sie <ObjectEntryCount>
entsprechend Ihren Anforderungen in einen geeigneten Wert.
Wenn Sie beispielsweise bis zu zehn Objekteinträge zulassen, können Sie die JSONThreatProtection-Richtlinie so ändern:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>10</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Anzahl der Array-Elemente überschritten
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded array element count at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die im Element <Source>
angegebene Nutzlast der Eingabenachricht ein JSON-Array mit einer Anzahl von Elementen enthält, als die im Element <ArrayElementCount>
der Richtlinie angegebene Anzahl angegeben sind.
Wenn beispielsweise das Element <ArrayElementCount>
als 3
angegeben wird, die Eingabenutzlast aber ein JSON-Array mit mehr als drei Elementen hat, wird dieser Fehler ausgegeben.
Diagnose
Suchen Sie in der Fehlermeldung nach dem Richtliniennamen und der Zeilennummer, in der die Arraylänge überschritten wurde. In der folgenden Fehlermeldung lautet der Richtlinienname beispielsweise
JSON-Threat-Protection-1
und die Zeilennummer in der Nutzlast3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Notieren Sie sich den Wert, der für das Element
<ArrayElementCount>
der Richtlinie angegeben ist (siehe Schritt 1).Im folgenden Beispiel für die JSONThreatProtection-Richtlinie ist
<ArrayElementCount>
auf3
festgelegt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>6</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Untersuchen Sie die spezifische Zeilennummer (in Schritt 1 identifiziert) der Eingabenutzlast und prüfen Sie, ob das dort angegebene Array eine höhere Anzahl aufweist als die im Element
<ArrayElementCount>
angegebene Zahl (in Schritt 2 identifiziert). Wenn die Anzahl der Array-Elemente die Anzahl überschreitet, ist dies die Fehlerursache.Hier ist ein Beispiel für eine Eingabenutzlast:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
Die oben gezeigte JSON-Nutzlast enthält fünf Elemente im Array
models
in Zeile 3. Da die Anzahl der Arrayelemente größer als 3 ist (der für das Element<ArrayElementCount>
angegebene Wert), erhalten Sie den folgenden Fehler:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Lösung
Wenn die JSONThreatProtection-Richtlinie vor Nutzlasten mit einem bestimmten Schwellenwert für die Arrayanzahl geschützt ist, wird die Fehlermeldung erwartet. In diesem Fall sind keine weiteren Maßnahmen erforderlich.
Wenn Sie jedoch feststellen, dass eine größere Anzahl von Elementen in einem Array zulässig ist, ändern Sie <ArrayElementCount>
entsprechend Ihren Anforderungen in einen geeigneten Wert.
Wenn Sie beispielsweise bis zu fünf Array-Elemente zulassen, können Sie die Richtlinie so ändern:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>5</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Containertiefe wurde überschritten
Fehlerantworttext
Laufzeittraffic gibt einen 500-Antwortcode mit dem folgenden Fehler zurück:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Beispiel für einen Fehlerantworttext
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded container depth at line 5",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Nutzlast der Eingabenachricht, die durch das Element <Source>
angegeben wird, ein JSON-Objekt enthält, das JSON-Elemente mit einer Containertiefe enthält, die die maximale Containertiefe überschreitet, die im Element <ContainerDepth>
der Richtlinie angegeben ist. Die Containertiefe ist die maximal zulässige verschachtelte Tiefe für JSON-Elemente. Zum Beispiel würde ein Array mit einem Objekt, das ein Objekt enthält, eine Tiefetiefe von 3 enthalten.
Wenn das <ContainerDepth>
-Element beispielsweise 3
ist, die Eingabenutzlast jedoch eine Containertiefe überschreitet, die diesen Grenzwert überschreitet, wird dieser Fehler ausgegeben.
Diagnose
Untersuchen Sie die Fehlermeldung, um den Namen der JSONThreatProtection-Richtlinie und die Zeilennummer zu ermitteln, in der die Containertiefe überschritten wurde. In der folgenden Fehlermeldung lautet der Richtlinienname beispielsweise
JSON-Threat-Protection-1
und die Zeilennummer in der Nutzlast5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Notieren Sie sich den für das Element
<ContainerDepth>
angegebenen Wert (identifiziert in Schritt 1).Im folgenden Beispiel für die JSONThreatProtection-Richtlinie ist
<ContainerDepth>
auf5
festgelegt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Untersuchen Sie die spezifische Zeilennummer (in Schritt 1 identifiziert) der Eingabenutzlast und prüfen Sie, ob die Containertiefe in der Nutzlast höher ist als der im Element
<ContainerDepth>
angegebene Wert (in Schritt 2 identifiziert). Wenn die Containertiefe die Anzahl überschreitet, ist dies die Fehlerursache.Hier ist ein Beispiel für eine Eingabenutzlast:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Die oben gezeigte JSON-Nutzlast hat in Zeile 5 eine Containertiefe von 6. Da die Tiefe größer als 5 ist, wird für den Wert
<ContainerDepth>
der JSONThreatProtection-Richtlinie der folgende Fehler ausgegeben:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Lösung
Wenn die JSONThreatProtection-Richtlinie vor Nutzlasten mit Containertiefen geschützt wurde, die den angegebenen Wert überschreiten, wird die Fehlermeldung erwartet. In diesem Fall sind keine weiteren Maßnahmen erforderlich.
Wenn Sie jedoch feststellen, dass eine höhere Containertiefe akzeptabel ist, ändern Sie <ContainerDepth>
entsprechend den Anforderungen.
Wenn Sie beispielsweise der Meinung sind, dass eine Containertiefe bis zu 10 möglich sind, ändern Sie die Richtlinie so:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>10</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Stringlänge überschritten
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded string value length at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Nutzlast der Eingabenachricht, die durch das <Source>
-Element angegeben wird, JSON-Elemente mit mehr Zeichen als die im Element <StringValueLength>
zulässigen Elemente enthält.
Wenn beispielsweise das Element <StringValueLength>
in der Richtlinie auf 50
gesetzt wird, die Eingabenutzlast jedoch mindestens ein Element enthält, dessen Werte mehr als 50 Zeichen enthalten, wird dieser Fehler ausgegeben.
Diagnose
Suchen Sie in der Fehlermeldung nach dem Richtliniennamen und der Zeilennummer, in der die Stringlänge überschritten wurde. Im folgenden Beispiel lautet der Richtlinienname
JSON-Threat-Protection-1 and
Zeile in der Nutzlast3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Notieren Sie sich den für das
<StringValueLength>
-Element angegebenen Wert in "(Schritt 1)".Im folgenden Beispiel für die JSONThreatProtection-Richtlinie ist
<StringValueLength>
auf50
festgelegt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Untersuchen Sie die in Schritt 1 ermittelte spezifische Zeilennummer der Eingabenutzlast und prüfen Sie, ob die Länge des Werts größer ist als die Anzahl der Zeichen, die für das Element
<StringValueLength>
(in Schritt 2 ermittelt) angegeben wurden. Wenn die Länge des Werts das Limit überschreitet, ist dies die Ursache des Fehlers.Hier ist ein Beispiel für eine Eingabenutzlast:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Die oben angezeigte JSON-Nutzlast enthält ein Objekt namens
Place Name
, dessen WertTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
85 Zeichen in Zeile 3 hat. Da die Länge des Werts größer als 50 ist, wird der im Element<StringValueLength>
angegebene Wert ausgegeben:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Lösung
Wenn die JSONThreatProtection-Richtlinie vor Nutzlasten mit Werten geschützt werden soll, die eine bestimmte Stringlänge überschreiten, ist die Fehlermeldung zu erwarten. In diesem Fall sind keine weiteren Maßnahmen erforderlich.
Wenn Sie jedoch feststellen, dass eine längere Wertlänge in der Nutzlast angegeben werden kann, müssen Sie das <StringValueLength>
Ihren Anforderungen entsprechend anpassen.
Wenn Sie beispielsweise den Wert bis zu einer Länge von 90 zulassen möchten, ändern Sie die Richtlinie so:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>90</StringValueLength>
</JSONThreatProtection>
Kein gültiges JSON-Objekt
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Nutzlast der Eingabenachricht, die vom <Source>
-Element in der JSONThreatProtection-Richtlinie angegeben wurde, kein gültiges JSON-Objekt ist.
Diagnose
Prüfen Sie die Fehlermeldung, um den Richtliniennamen und die Zeilennummer zu ermitteln, in der der Fehler aufgetreten ist. Im folgenden Beispiel lautet der Richtlinienname
JSON-Threat-Protection-1 and
Zeile in der Nutzlast2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Untersuchen Sie die in Schritt 1 identifizierte Zeilennummer der Eingabenutzlast und prüfen Sie, ob das in der Nutzlast übergebene JSON-Objekt tatsächlich ein gültiges JSON-Objekt ist.
Hier ist ein Beispiel für eine Eingabenutzlast:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
In der oben gezeigten JSON-Nutzlast enthält die Zeile 3 keinen
":"
(Doppelpunkt). Da es sich nicht um ein gültiges JSON-Objekt handelt, erhalten Sie folgende Fehlermeldung:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Lösung
Prüfen Sie, ob eine gültige Eingabe im JSON-Nutzlast an einen API-Proxy übergeben wird, der die JSONThreatProtection-Richtlinie enthält.
Ändern Sie für das obige Beispiel die JSON-Nutzlast so:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Fehlercode
steps.jsonthreatprotection.SourceUnavailable
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn die Variable message, die im <Source>
-Element der JSONThreatProtection-Richtlinie angegeben ist, entweder:
- Außerhalb des Zuständigkeitsbereichs (nicht in dem spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird)
- Ist keiner der gültigen Werte
request
,response
odermessage
.
Dieser Fehler tritt beispielsweise auf, wenn für das Element <Source>
in der Richtlinie eine Variable festgelegt ist, die in dem Ablauf, in dem die Richtlinie ausgeführt wird, nicht vorhanden ist.
Diagnose
Geben Sie den Richtliniennamen und den Namen der Quellvariable aus der Fehlermeldung an. In der folgenden Fehlermeldung lautet der Richtlinienname beispielsweise
JSON-Threat-Protection-1
und die Quellvariablerequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Prüfe den Wert, der für das in Schritt 1 angegebene Element
<Source>
angegeben ist.Im folgenden JSONThreatProtection-Richtlinienbeispiel ist für das Element
<Source>
der Wertrequests
festgelegt.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>requests</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Gültige Werte für das Element
<Source>
sindrequest
,response
odermessage
. Da Anfragen kein gültiger Wert sind und nicht in dem Ablauf vorhanden sind, in dem die Richtlinie ausgeführt wird, erhalten Sie folgende Fehlermeldung:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Lösung
Achten Sie darauf, dass die Variable im <Source>
-Element der fehlgeschlagenen JSONThreatProtection-Richtlinie entweder auf request
, response
oder message
und in dem Ablauf festgelegt ist, in dem die Richtlinie ausgeführt wird.
Um die oben gezeigte JSONThreatProtection-Beispielrichtlinie zu korrigieren, können Sie das Element <Source>
so ändern, dass die Variable request
verwendet wird, da sie im Anfrageablauf vorhanden ist:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
NonMessageVariable
Fehlercode
steps.jsonthreatprotection.NonMessageVariable
Fehlerantworttext
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Beispieltext für eine Fehlermeldung
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Ursache
Dieser Fehler tritt auf, wenn für das Element <Source>
in der JSONThreatProtection-Richtlinie eine Variable festgelegt ist, die nicht vom Typ message ist.
Nachrichtentypvariablen stellen ganze HTTP-Anfragen und -Antworten dar. Die integrierten Apigee-Flow-Variablen-Anfrage, -Antwort und -Nachricht sind vom Typ Nachricht. Weitere Informationen zu Nachrichtenvariablen finden Sie in der Variablenreferenz.
Diagnose
Ermitteln Sie den Namen der JSONThreatProtection-Richtlinien und den Namen der Quellvariablen aus der Fehlermeldung. In der folgenden Fehlermeldung lautet der Richtlinienname beispielsweise
JSON-Threat-Protection-1
und die Quellvariablemessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Untersuchen Sie das Element
<Source>
der JSONThreatProtection-Richtlinie (in Schritt 1 erkannt).Im folgenden Beispiel für die JSONThreatProtection-Richtlinie ist
<Source>
aufmessage.content
statt aufmessage
festgelegt:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>message.content</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Da
message.content
keine Typnachricht ist, wird der folgende Fehler angezeigt:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Lösung
Sorgen Sie dafür, dass das <Source>
-Element in der fehlgeschlagenen JSONThreatProtection-Richtlinie auf eine Ablaufvariable für die Nachricht festgelegt ist, die in dem Ablauf vorhanden ist, in dem die Richtlinie ausgeführt wird.
Um die Richtlinie zu korrigieren, können Sie das Element <Source>
so ändern, dass eine Variable vom Typ "Message" angegeben wird. Im fehlgeschlagenen JSONThreatProtection-Objekt können Sie beispielsweise das Element <Source>
als message
angeben:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>message</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>