Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. informacje.
ExecutionFailed
Kod błędu
steps.jsonthreatprotection.ExecutionFailed
Treść odpowiedzi błędu
{ "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. Poniższa tabela przedstawia różne typy błędów i ich możliwe przyczyny:
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ą dozwoloną liczbę wpisów w obiekcie. |
Przekroczona liczba elementów tablicy | Przekroczono maksymalną dozwoloną liczbę elementów w tablicy. |
Przekroczona głębokość kontenera | Przekroczono maksymalną dozwoloną głębokość zagnieżdżoną. |
Przekroczona długość wartości ciągu | Przekroczono maksymalną długość wartości ciągu znaków. |
Nieprawidłowy obiekt JSON | Wejściowy ładunek JSON jest nieprawidłowy. |
Przekroczono długość nazwy wpisu obiektu
Treść odpowiedzi błędu
{ "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 o błędzie
{
"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, gdy ładunek komunikatu wejściowego określony przez element <Source>
zawiera obiekt JSON o nazwie właściwości przekraczającej 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 nazwie większej niż 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 poniższym 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ść podaną 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ź konkretny numer wiersza (zidentyfikowany w kroku 1) ładunku wejściowego i sprawdź, czy długość nazwy obiektu jest większa niż wartość określona w elemencie
<ObjectEntryNameLength>
(określonej 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" }
Powyższy ładunek JSON ma w wierszu 2 właściwość o nazwie
number
, która ma 6 znaków (nazwa o długości 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ę przed ładunkami z nazwami wpisów obiektów przekraczającymi 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ślać dłuższe nazwy wpisów obiektów, zmień <ObjectEntryNameLength>
na odpowiednią wartość zgodnie ze swoimi wymaganiami.
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 błędu
{ "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 o błędzie
{
"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ściowej określony przez element <Source>
zawiera obiekt JSON, który zawiera więcej pozycji (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 ma więcej niż 5 wpisów, zgłasza 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ść określoną w elemencie
<ObjectEntryCount>
zasady (określonej w kroku 1).W tej przykładowej zasadzie
<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ź konkretny numer 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>
(zidentyfikowanego w kroku 2). Jeśli liczba obiektów przekracza liczbę wpisów obiektu, 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 widocznym powyżej ładunku JSON szósty wpis występuje w wierszu 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ę przed ładunkami z liczbą wpisów obiektów przekraczających określony próg, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz podejmować żadnych dodatkowych działań.
Jeśli jednak stwierdzisz, że w ładunku można bez żadnych konsekwencji uwzględnić więcej wpisów obiektów, zmodyfikuj <ObjectEntryCount>
do odpowiedniej wartości zgodnie z wymaganiami.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 10 wpisów 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 błędu
{ "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 o błędzie
{
"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ściowy 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, zgłaszany jest ten błąd.
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ślonej 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ź konkretny numer wiersza (zidentyfikowany w kroku 1) ładunku wejściowego i sprawdź, czy podana tablica zawiera liczbę wyższą niż liczba określona w elemencie
<ArrayElementCount>
(zidentyfikowanej 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" ] }
Powyższy ładunek JSON ma 5 elementów w tablicy o nazwie
models
w wierszu 3. Ponieważ liczba elementów tablicy przekracza 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ę przed ładunkami o określonym progu liczby tablic, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że w tablicy może być dozwolona większa liczba elementów, zmień <ArrayElementCount>
na odpowiednią wartość do swoich potrzeb.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 5 elementów tablicy, 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>5</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Przekroczono głębokość kontenera
Treść odpowiedzi błędu
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 o błędzie
{
"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 z 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 w przypadku tablicy zawierającej obiekt zawierający obiekt głębokość izolacji wynosi 3.
Jeśli np. element <ContainerDepth>
ma wartość 3
, ale głębokość kontenera w ładunku wejściowym przekracza ten limit, błąd zostanie 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ślonego 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 (zidentyfikowanego w kroku 1) ładunku wejściowego i sprawdź, czy głębokość kontenera w ładunku jest większa niż wartość określona w elemencie
<ContainerDepth>
(zidentyfikowanej w kroku 2). Jeśli głębokość kontenera przekracza liczbę, to jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Powyższy ładunek JSON w wierszu 5 ma głębokość kontenera równą 6. Ponieważ głębokość jest większa niż 5, wartość elementu
<ContainerDepth>
zasady JSONThreatProtection powoduje wystąpienie tego błędu: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ę przed ładunkami z głębokościami kontenerów, które przekraczają podaną wartość, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic robić.
Jeśli jednak stwierdzisz, że większe głębokości kontenerów są akceptowalne, zmień <ContainerDepth>
na odpowiednią wartość zgodnie ze swoimi wymaganiami.
Jeśli na przykład uważasz, że zezwalasz na głębokość kontenera do 10 kontenerów, zmodyfikuj zasady 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 błędu
{ "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 o błędzie
{
"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ściowej określony przez element <Source>
zawiera elementy JSON z wartościami przekraczającymi limit znaków w elemencie <StringValueLength>
.
Jeśli na przykład element <StringValueLength>
ma w zasadzie wartość 50
, ale ładunek wejściowy zawiera co najmniej jeden element, którego wartości zawierają więcej niż 50 znaków, zostanie zgłoszony ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, by zidentyfikować nazwę zasady i numer wiersza, w którym została przekroczona 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>
w elemencie (określonym 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ź konkretny numer wiersza (zidentyfikowany w kroku 1) ładunku wejściowego i sprawdź, czy długość wartości jest większa niż liczba znaków określona dla elementu
<StringValueLength>
(określonego 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ższy ł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>
powoduje wystąpienie tego błędu: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ę przed ładunkami 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ć dłuższą wartość, zmodyfikuj atrybut <StringValueLength>
do odpowiedniej wartości.
Jeśli np. uważasz, że wartość nie może przekraczać 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 błędu
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi o błędzie
{
"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
Sprawdź komunikat o błędzie, by poznać 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 konkretnego wiersza (zidentyfikowanego w kroku 1) ładunku wejściowego i sprawdź, czy obiekt JSON przekazany w ładunku rzeczywiście jest prawidłowym obiektem JSON.
Oto przykładowy ładunek wejściowy:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
W widocznym powyżej ładunku JSON wiersz 3 nie zawiera dwukropka (
":"
). Ponieważ nie jest to prawidłowy obiekt JSON, wystąpi błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Rozdzielczość
Sprawdź, czy do każdego serwera proxy interfejsu API zawierającego zasadę JSONThreatProtection przesyłany 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 błędu
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Przykładowa treść odpowiedzi o błędzie
{
"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 występuje w procesie, w którym jest wykonywana.
Diagnostyka
Wskaż nazwę zasady oraz nazwę zmiennej Źródło 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ść określoną dla elementu
<Source>
określonego 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
. Żądania nie są prawidłową wartością i nie występują w procesie, w którym jest wykonywana zasada, więc pojawia się błąd:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Rozdzielczość
Upewnij się, że zmienna ustawiona w elemencie <Source>
nieudanej zasady JSONThreatProtection jest ustawiona na request
, response
lub message
i istnieje w procesie, w którym jest wykonywana.
Aby poprawić przykładową zasadę JSONThreatProtection widoczną powyżej, można zmodyfikować element <Source>
tak, aby używał zmiennej request
, ponieważ występuje ona 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 błędu
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Przykładowa treść odpowiedzi o błędzie
{
"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 zmienne przepływu Apigee Edge dotyczące żądań, odpowiedzi i komunikatu są typu komunikat. Więcej informacji o zmiennych wiadomości znajdziesz w dokumentacji zmiennych.
Diagnostyka
Zidentyfikuj nazwę zasady JSONThreatProtection i nazwę zmiennej Source 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ło tomessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Sprawdź element
<Source>
zasady JSONThreatProtection (zidentyfikowanego w kroku 1).W tym 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>
Komunikat
message.content
nie jest typu, więc 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 przepływie, w którym jest wykonywana zasada.
Aby poprawić tę zasadę, możesz zmodyfikować element <Source>
tak, by zawierał zmienną typu komunikat. Na przykład w nieudanym zabezpieczeniem JSONThreatProtection można było 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>