Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
ExecutionFailed
Kod błędu
steps.jsonthreatprotection.ExecutionFailed
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Typy błędów i ich możliwe przyczyny
Zasada JSONThreatProtection może zgłaszać wiele różnych typów błędów ExecutionFailed. Tabela poniżej zawiera opis różnych typów błędów i ich możliwych przyczyn:
Typ błędu | Przyczyna |
Przekroczono długość nazwy wpisu obiektu | Przekroczono maksymalną długość ciągu znaków w nazwie wpisu obiektu. |
Przekroczona liczba wpisów obiektów | Przekroczono maksymalną liczbę wpisów w obiekcie. |
Przekroczono liczbę elementów tablicy | Przekroczono maksymalną dozwoloną liczbę elementów w tablicy. |
Przekroczono głębokość kontenera | Przekroczono maksymalną dozwoloną głębokość zagnieżdżoną. |
Przekroczona długość wartości ciągu znaków | Przekroczono maksymalną długość wartości ciągu znaków. |
Nieprawidłowy obiekt JSON | Wejściowa ładunek JSON jest nieprawidłowy. |
Przekroczono długość nazwy wpisu obiektu
Treść odpowiedzi o błędzie
{ "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" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"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"
}
}
}
Przyczyna
Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source>
zawiera obiekt JSON o nazwie właściwości, która przekracza maksymalną długość określoną w elemencie <ObjectEntryNameLength>
.
Jeśli na przykład element <ObjectEntryNameLength>
jest określony w zasadzie jako 5, ale wejściowy ładunek wiadomości zawiera właściwość JSON o długości przekraczającej 5 znaków, ten błąd zostanie zgłoszony.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady JSONThreatProtection i numer wiersza, w którym występuje długa nazwa wpisu. Na przykład w tym komunikacie o błędzie nazwa zasady JSONThreatProtection to
JSON-Threat-Protection-1
, a numer wiersza w ładunku to 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Sprawdź zasadę określoną w kroku 1 i zanotuj wartość określoną w elemencie
<ObjectEntryNameLength>
.Na przykład w tej zasadzie JSONThreatProtection
<ObjectEntryNameLength>
ma wartość5
:<?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>
Sprawdź numer konkretnego wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy długość nazwy obiektu jest większa niż wartość określona w elemencie
<ObjectEntryNameLength>
(określona w kroku 2). Jeśli długość nazwy obiektu przekracza tę liczbę, to jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "number" : 500, "string" : "text" }
Przedstawiony powyżej ładunek JSON ma w wierszu 2 właściwość o nazwie
number
, która ma 6 znaków (długość nazwy wynosi 6). Ponieważ długość nazwy obiektu przekracza 5 (wartość określona dla elementu<ObjectEntryNameLength>
), pojawia się ten błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Rozdzielczość
Jeśli zasada JSONThreatProtection miała na celu ochronę ładunków z nazwami wpisów obiektów, które przekraczają zdefiniowaną wartość, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że w ładunku można bez żadnych konsekwencji określić dłuższe nazwy wpisów obiektów, zmień <ObjectEntryNameLength>
na odpowiednią wartość odpowiednio do swoich potrzeb.
Jeśli na przykład uważasz, że możesz zezwalać na nazwy obiektów o długości do 10 znaków, zmodyfikuj zasadę JSONThreatProtection w ten sposób:
<?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>
Przekroczono liczbę wpisów obiektów
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"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"
}
}
}
Przyczyna
Ten błąd występuje, jeśli ładunek wiadomości wejściowy określony przez element <Source>
zawiera obiekt JSON zawierający więcej wpisów (właściwości) niż wartość określona w elemencie <ObjectEntryCount>
zasady.
Jeśli na przykład element <ObjectEntryCount>
ma wartość 5, ale wejściowy ładunek JSON zawiera więcej niż 5 wpisów, zgłaszany jest ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady JSONThreatProtection i numer wiersza, w którym została przekroczona liczba wpisów. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a numer wiersza w ładunku to7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Zanotuj wartość podaną w elemencie
<ObjectEntryCount>
zasady (określonej w kroku 1).W tym przykładzie zasady
<ObjectEntryCount>
ma wartość5
:<?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>
Sprawdź numer konkretnego wiersza (zidentyfikowany w kroku 1) ładunku wejściowego i sprawdź, czy liczba encji w ładunku jest większa niż wartość określona dla elementu
<ObjectEntryCount>
(określona w kroku 2). Jeśli liczba obiektów przekracza liczbę wpisów obiektów, to jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
W pokazanym powyżej ładunku JSON szósty wpis występuje w wierszu nr 7 (firma). Ponieważ liczba wpisów obiektów w wejściowym ładunku JSON jest większa niż 5 (wartość określona dla elementu
<ObjectEntryCount>
), pojawia się ten błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Rozdzielczość
Jeśli zasada JSONThreatProtection miała na celu ochronę ładunków z liczbą wpisów obiektów przekraczających określony próg, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że ładunek może zawierać więcej wpisów obiektów bez żadnych konsekwencji, zmodyfikuj <ObjectEntryCount>
do odpowiedniej wartości zgodnie ze swoimi wymaganiami.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 10 wpisów dotyczących obiektów, zmodyfikuj zasadę JSONThreatProtection w ten sposób:
<?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>
Przekroczono liczbę elementów tablicy
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"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"
}
}
}
Przyczyna
Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source>
zawiera tablicę JSON z liczbą elementów większą niż liczba określona w elemencie <ArrayElementCount>
zasady.
Jeśli na przykład element <ArrayElementCount>
jest określony jako 3
, ale ładunek wejściowy ma tablicę JSON z więcej niż 3 elementami, ten błąd jest zgłaszany.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym przekroczono długość tablicy. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a numer wiersza w ładunku to3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Zanotuj wartość określoną w elemencie
<ArrayElementCount>
zasady (określoną w kroku 1).W tym przykładzie zasady JSONThreatProtection
<ArrayElementCount>
ma wartość3
:<?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>
Sprawdź numer konkretnego wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy podana w nim tablica ma wyższą liczbę niż liczba określona w elemencie
<ArrayElementCount>
(określona w kroku 2). Jeśli liczba elementów tablicy przekracza liczbę, to jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
Ładunek JSON przedstawiony powyżej ma 5 elementów w tablicy o nazwie
models
w wierszu 3. Ponieważ liczba elementów tablicy jest większa niż 3 (wartość określona dla elementu<ArrayElementCount>
), pojawia się ten błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Rozdzielczość
Jeśli zasada JSONThreatProtection miała na celu ochronę ładunków z określonym progiem liczby tablic, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że można zezwolić na większą liczbę elementów w tablicy, zmień <ArrayElementCount>
na odpowiednią wartość na podstawie swoich wymagań.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 5 elementów tablicy, zmień zasadę w ten sposób:
<?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>
Przekroczono głębokość kontenera
Treść odpowiedzi o błędzie
Ruch środowiska wykonawczego zwraca kod odpowiedzi 500 z tym błędem:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"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"
}
}
}
Przyczyna
Ten błąd występuje, jeśli ładunek komunikatu wejściowego określony przez element <Source>
zawiera obiekt JSON zawierający elementy JSON o głębokości kontenera, która przekracza maksymalną głębokość kontenera określoną w elemencie <ContainerDepth>
zasady. Głębokość kontenera to maksymalna dozwolona głębokość zagnieżdżenia elementów JSON. Na przykład tablica zawierająca obiekt zawierający obiekt ograniczyłaby głębokość izolacji do 3.
Jeśli np. element <ContainerDepth>
ma wartość 3
, ale głębokość kontenera w ładunku wejściowym przekracza ten limit, ten błąd zostaje zgłoszony.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady JSONThreatProtection i numer wiersza, w którym przekroczona jest głębokość kontenera. Na przykład w poniższym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a numer wiersza w ładunku to5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Zanotuj wartość określoną dla elementu
<ContainerDepth>
(określonej w kroku 1).W tym przykładzie zasady JSONThreatProtection
<ContainerDepth>
ma wartość5
:<?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>
Sprawdź numer konkretnego wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy głębokość kontenera w ładunku jest większa niż wartość określona w elemencie
<ContainerDepth>
(określona w kroku 2). Jeśli głębokość kontenera przekracza ten limit, to właśnie jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
W widocznym powyżej ładunku JSON głębokość kontenera w wierszu 5 wynosi 6. Ponieważ głębokość jest większa niż 5, wartość określona dla elementu
<ContainerDepth>
zasady JSONThreatProtection powoduje następujący błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Rozdzielczość
Jeśli zasada JSONThreatProtection miała na celu ochronę ładunków z głębokością kontenerów przekraczającą określoną wartość, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że akceptowalna jest większa głębokość kontenera, zmień <ContainerDepth>
na odpowiednią wartość na podstawie swoich wymagań.
Jeśli na przykład uważasz, że zezwalasz na głębokość kontenerów do 10 kontenerów, zmień zasadę w ten sposób:
<?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>
Przekroczono długość wartości ciągu
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"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"
}
}
}
Przyczyna
Ten błąd występuje, jeśli ładunek wiadomości wejściowy określony przez element <Source>
zawiera elementy JSON z wartościami zawierającymi więcej znaków niż jest to dozwolone w elemencie <StringValueLength>
.
Jeśli na przykład element <StringValueLength>
ma w zasadzie wartość 50
, ale ładunek wejściowy zawiera co najmniej 1 element, którego wartości zawierają ponad 50 znaków, ten błąd jest zgłaszany.
Diagnostyka
Zapoznaj się z komunikatem o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym przekroczono długość ciągu znaków. W poniższym przykładzie nazwa zasady to
JSON-Threat-Protection-1 and
wiersz w ładunku3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Zanotuj wartość określoną dla elementu
<StringValueLength>
(określonego w kroku 1).W tym przykładzie zasady JSONThreatProtection
<StringValueLength>
ma wartość50
:<?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>
Sprawdź numer konkretnego wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy długość wartości jest większa niż liczba znaków określona w elemencie
<StringValueLength>
(określonym w kroku 2). Jeśli długość wartości przekracza limit, to jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Powyższa ładunek JSON zawiera obiekt o nazwie
Place Name
, którego wartośćTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
w wierszu 3 zawiera 85 znaków. Ponieważ długość wartości przekracza 50, wartość określona w elemencie<StringValueLength>
pojawia się ten błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Rozdzielczość
Jeśli zasada JSONThreatProtection miała na celu ochronę ładunków z wartościami przekraczającymi określoną długość ciągu znaków, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że w ładunku można podać większą długość wartości, zmodyfikuj <StringValueLength>
do odpowiedniej wartości na podstawie swoich wymagań.
Jeśli np. uważasz, że wartość nie może być większa niż 90 znaków, zmodyfikuj tę zasadę w ten sposób:
<?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>
Nieprawidłowy obiekt JSON
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Przyczyna
Ten błąd występuje, jeśli ładunek wiadomości wejściowej określony przez element <Source>
w zasadzie JSONThreatProtection nie jest prawidłowym obiektem JSON.
Diagnostyka
Zapoznaj się z komunikatem o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym wystąpił błąd. W poniższym przykładzie nazwa zasady to
JSON-Threat-Protection-1 and
wiersz w ładunku2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Sprawdź numer wiersza (zidentyfikowany w kroku 1) ładunku wejściowego i sprawdź, czy obiekt JSON przekazany w ładunku jest rzeczywiście poprawnym obiektem JSON.
Oto przykładowy ładunek wejściowy:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
W przedstawionym powyżej ładunku JSON wiersz 3 nie zawiera dwukropka
":"
. Ponieważ nie jest to prawidłowy obiekt JSON, pojawi się błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Rozdzielczość
Sprawdź, czy do każdego serwera proxy interfejsu API, który zawiera zasadę JSONThreatProtection, przekazywany jest prawidłowy wejściowy ładunek JSON.
W przykładzie opisanym powyżej zmodyfikuj ładunek JSON w ten sposób:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Kod błędu
steps.jsonthreatprotection.SourceUnavailable
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zmienna message określona w elemencie <Source>
zasady JSONThreatProtection ma wartość:
- Poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada)
- Nie jest jedną z prawidłowych wartości
request
,response
lubmessage
Ten błąd występuje np. wtedy, gdy element <Source>
w zasadzie jest ustawiony na zmienną, która nie istnieje w procesie, w którym jest wykonywana.
Diagnostyka
Wskaż nazwę zasady oraz nazwę zmiennej źródłowej z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a zmienna źródłowa torequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Sprawdź wartość elementu
<Source>
zidentyfikowanego w kroku 1.W poniższym przykładzie zasady JSONThreatProtection element
<Source>
jest ustawiony narequests
.<?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>
Prawidłowe wartości elementu
<Source>
torequest
,response
lubmessage
. Ponieważ żądania nie są prawidłową wartością i nie występują w procesie, w którym jest wykonywana zasada, pojawia się błąd:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Rozdzielczość
Sprawdź, czy zmienna ustawiona w elemencie <Source>
nieudanej zasady JSONThreatProtection jest ustawiona na request
, response
lub message
i istnieje w procesie, w którym jest uruchamiana.
Aby poprawić przykładową zasadę JSONThreatProtection widoczną powyżej, możesz zmodyfikować element <Source>
tak, aby używał zmiennej request
, ponieważ występuje on w przepływie żądania:
<?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
Kod błędu
steps.jsonthreatprotection.NonMessageVariable
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Przykładowa treść odpowiedzi dotyczącej błędu
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Przyczyna
Ten błąd występuje, jeśli element <Source>
w zasadzie JSONThreatProtection jest ustawiony na zmienną, która nie jest typu message.
Zmienne typu wiadomości reprezentują całe żądania i odpowiedzi HTTP. Wbudowane żądania, odpowiedź i komunikat zmiennych przepływu Apigee Edge są typu. Więcej informacji o zmiennych wiadomości znajdziesz w dokumentacji zmiennych.
Diagnostyka
Znajdź nazwę zasady JSONThreatProtection i nazwę zmiennej źródłowej z komunikatu o błędzie. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a zmienna źródłowa tomessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Sprawdź element
<Source>
zasady JSONThreatProtection (określony w kroku 1).W poniższym przykładzie zasady JSONThreatProtection
<Source>
ma wartośćmessage.content
, a niemessage
:<?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>
Ponieważ
message.content
nie jest typem komunikatu, pojawia się błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Rozdzielczość
Sprawdź, czy element <Source>
w nieudanej zasadzie JSONThreatProtection jest ustawiony na zmienną przepływu typu message, która istnieje w procesie, w którym jest wykonywana zasada.
Aby poprawić zasadę, możesz zmodyfikować element <Source>
tak, by zawierał zmienną typu komunikat. Na przykład w nieudanej próbie JSONThreatProtection można określić element <Source>
jako message
:
<?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>