Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
ExecutionFailed
Kod błędu
steps.jsonthreatprotection.ExecutionFailed
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Rodzaje błędów i możliwe przyczyny
Zasady JSONThreatProtection mogą zgłaszać wiele różnych typów błędów ExecutionFailed. W tabeli poniżej znajdziesz różne typy błędów i ich możliwe przyczyny:
| Typ błędu | Przyczyna |
| Przekroczono długość nazwy wpisu obiektu | Przekroczono maksymalną długość ciągu znaków dozwoloną w nazwie wpisu obiektu. |
| Przekroczono liczbę wpisów obiektu | Przekroczono maksymalną liczbę wpisów dozwolonych w obiekcie. |
| Przekroczono liczbę elementów tablicy | Przekroczono maksymalną liczbę elementów dozwolonych w tablicy. |
| Przekroczono głębokość kontenera | Przekroczono maksymalną dozwoloną głębokość zagnieżdżenia. |
| Przekroczono długość wartości ciągu znaków | Przekroczono maksymalną dozwoloną 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 na błąd
{ "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 na błąd
{
"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 z nazwą 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 zasadach jako 5, ale ładunek wiadomości wejściowej zawiera właściwość JSON, której nazwa ma więcej niż 5 znaków, wystąpi ten błąd.
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 2Sprawdź zasadę zidentyfikowaną w kroku 1 i zanotuj wartość podaną w elemencie
<ObjectEntryNameLength>.Na przykład w tych zasadach JSONThreatProtection parametr
<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 (określony w kroku 1) w ładunku wejściowym i zobacz, czy długość nazwy obiektu jest większa niż wartość określona w elemencie
<ObjectEntryNameLength>(określonym w kroku 2). Jeśli długość nazwy obiektu przekracza tę liczbę, to jest to przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "number" : 500, "string" : "text" }W wyświetlonych powyżej danych JSON w wierszu 2 znajduje się właściwość o nazwie
number, która ma 6 znaków (długość nazwy wynosi 6). Długość nazwy obiektu jest większa niż 5 (wartość określona dla elementu<ObjectEntryNameLength>), dlatego 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 zasady JSONThreatProtection miały chronić przed ładunkami z nazwami wpisów obiektów, które przekraczają zdefiniowaną wartość, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak stwierdzisz, że w ładunku można podać dłuższe nazwy wpisów obiektów bez żadnych konsekwencji, zmień wartość <ObjectEntryNameLength> na odpowiednią na podstawie swoich wymagań.
Jeśli na przykład uważasz, że możesz zezwolić 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 na błąd
{ "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 na błąd
{
"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 wpisów (właściwości) niż wartość określona w elemencie <ObjectEntryCount> zasad.
Jeśli na przykład element <ObjectEntryCount> ma wartość 5, ale wejściowy ładunek JSON zawiera więcej niż 5 wpisów, wystąpi ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady JSONThreatProtection i numer wiersza, w którym przekroczono liczbę 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 7Zanotuj wartość podaną w elemencie
<ObjectEntryCount>zasady (określonej w kroku 1).W tym przykładzie zasady
<ObjectEntryCount>są ustawione na5:<?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 (określony w kroku 1) w ładunku wejściowym i sprawdź, czy liczba jednostek w ładunku jest większa niż wartość określona dla elementu
<ObjectEntryCount>(określonego w kroku 2). Jeśli liczba obiektów przekracza liczbę wpisów obiektów, to jest to 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 6 wpis znajduje się w wierszu 7 (company). Ponieważ liczba wpisów w obiekcie w wejściowym ładunku JSON jest większa niż 5 (wartość podana dla elementu
<ObjectEntryCount>), otrzymasz 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 chronić przed ładunkami z liczbą wpisów w obiekcie przekraczającą określony próg, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz podejmować żadnych dodatkowych działań.
Jeśli jednak stwierdzisz, że w ładunku można umieścić więcej wpisów obiektów bez żadnych konsekwencji, zmień wartość <ObjectEntryCount> na odpowiednią wartość na podstawie swoich wymagań.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 10 wpisów obiektów, zmodyfikuj zasady 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 na błąd
{ "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 na błąd
{
"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> zasad.
Jeśli na przykład element <ArrayElementCount> jest określony jako 3, ale ładunek wejściowy zawiera tablicę JSON z więcej niż 3 elementami, wystąpi 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 3Zanotuj wartość określoną dla elementu
<ArrayElementCount>zasady (zidentyfikowanego w kroku 1).W tym przykładzie zasady JSONThreatProtection parametr
<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 (określony w kroku 1) w ładunku wejściowym i zobacz, czy tablica w nim określona ma większą liczbę elementów niż liczba podana w elemencie
<ArrayElementCount>(określonym w kroku 2). Jeśli liczba elementów tablicy przekracza liczbę, jest to przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }Ładunek JSON pokazany powyżej zawiera 5 elementów w tablicy o nazwie
modelsw wierszu 3. Ponieważ liczba elementów tablicy jest większa niż 3 (wartość podana w elemencie<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 zasady JSONThreatProtection miały chronić przed ładunkami o określonym progu liczby tablic, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak stwierdzisz, że można zezwolić na większą liczbę elementów w tablicy, zmień wartość <ArrayElementCount> na odpowiednią wartość zgodnie z Twoimi wymaganiami.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 5 elementów tablicy, zmodyfikuj 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 na błąd
Ruch w czasie działania 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 na błąd
{
"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 wiadomości wejściowej określony przez element <Source> zawiera obiekt JSON, który zawiera elementy JSON o głębokości kontenera przekraczającej maksymalną głębokość kontenera określoną w elemencie <ContainerDepth> zasad. Głębokość kontenera to maksymalna dozwolona głębokość zagnieżdżenia elementów JSON. Na przykład tablica zawierająca obiekt, który zawiera obiekt, będzie miała głębokość zawierania równą 3.
Jeśli na przykład element <ContainerDepth> ma wartość 3, ale głębokość kontenera w ładunku wejściowym przekracza ten limit, zostanie zgłoszony ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady JSONThreatProtection i numer wiersza, w którym przekroczono głębokość kontenera. Na przykład w tym 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 5Zanotuj wartość określoną dla elementu
<ContainerDepth>(zidentyfikowanego w kroku 1).W tym przykładzie zasady JSONThreatProtection parametr
<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ź konkretny numer wiersza (określony w kroku 1) w ładunku wejściowym i zobacz, czy głębokość kontenera w ładunku jest większa niż wartość określona w elemencie
<ContainerDepth>(określonym w kroku 2). Jeśli głębokość kontenera przekracza liczbę, to jest to przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }W pokazanym powyżej ładunku JSON na linii 5 głębokość kontenera wynosi 6. Ponieważ wartość depth jest większa niż 5, w przypadku elementu
<ContainerDepth>zasady JSONThreatProtection otrzymasz ten błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Rozdzielczość
Jeśli zasady JSONThreatProtection miały chronić przed ładunkami o głębokości kontenera przekraczającej określoną wartość, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak uznasz, że większa głębokość kontenera jest dopuszczalna, zmień wartość <ContainerDepth> na odpowiednią na podstawie swoich wymagań.
Jeśli na przykład uważasz, że możesz zezwolić na głębokość kontenera do 10, 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 znaków
Treść odpowiedzi na błąd
{ "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 na błąd
{
"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, których wartości mają więcej znaków niż dozwolona liczba określona przez element <StringValueLength>.
Jeśli na przykład element <StringValueLength> jest ustawiony w zasadach na 50, ale ładunek wejściowy zawiera co najmniej 1 element, którego wartości mają więcej niż 50 znaków, wystąpi ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym przekroczono długość ciągu znaków. W tym przykładzie nazwa zasady to
JSON-Threat-Protection-1 andline in the payload3.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3Zanotuj wartość określoną dla elementu
<StringValueLength>w pliku (zidentyfikowanym w kroku 1).W tym przykładzie zasady JSONThreatProtection parametr
<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 (określony w kroku 1) w ładunku wejściowym i zobacz, 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 to przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }Dane JSON pokazane powyżej zawierają obiekt o nazwie
Place Name, którego wartośćTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahuma 85 znaków w wierszu 3. Długość wartości jest większa niż 50, czyli wartość podana w elemencie<StringValueLength>. W związku z tym otrzymasz 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 zasady JSONThreatProtection miały chronić przed ładunkami o wartościach przekraczających określoną długość ciągu znaków, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak stwierdzisz, że w ładunku można podać dłuższą wartość, zmień <StringValueLength> na odpowiednią wartość zgodnie z wymaganiami.
Jeśli na przykład uważasz, że możesz zezwolić na wartość o długości do 90 znaków, zmień 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>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>90</StringValueLength>
</JSONThreatProtection>
Nieprawidłowy obiekt JSON
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa treść odpowiedzi na błąd
{
"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 zasadach JSONThreatProtection nie jest prawidłowym obiektem JSON.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym wystąpił błąd. W tym przykładzie nazwa zasady to
JSON-Threat-Protection-1 andline in the payload2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3Sprawdź konkretny numer wiersza (określony w kroku 1) ładunku wejściowego i upewnij się, że obiekt JSON przekazany w ładunku jest prawidłowym obiektem JSON.
Oto przykładowy ładunek wejściowy:
{ "Longitude": 6.11499, "Latitude" 50.76891 }W pokazanym powyżej ładunku JSON w wierszu 3 nie ma znaku
":"(dwukropka). Ponieważ nie jest to prawidłowy obiekt JSON, otrzymasz 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 ładunek JSON.
W przypadku opisanego powyżej przykładu zmodyfikuj ładunek JSON w ten sposób:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Kod błędu
steps.jsonthreatprotection.SourceUnavailable
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Przykładowa treść odpowiedzi na błąd
{
"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:
- Poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady)
- nie jest jedną z prawidłowych wartości
request,responseanimessage;
Ten błąd występuje na przykład, jeśli element <Source> w zasadzie jest ustawiony na zmienną, która nie istnieje w przepływie, w którym zasada jest wykonywana.
Diagnostyka
Zidentyfikuj nazwę zasady 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 Source torequests:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not availableSprawdź wartość określoną dla elementu
<Source>zidentyfikowanego w kroku 1.W tym przykładzie zasad JSONThreatProtection element
<Source>ma wartośćrequests.<?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,responselubmessage. Ponieważ wartość „requests” jest nieprawidłowa i nie występuje w procesie, w którym wykonywana jest 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 ma wartość request, response lub message i czy występuje w przepływie, w którym jest wykonywana zasada.
Aby poprawić przykładowe zasady JSONThreatProtection pokazane powyżej, możesz zmodyfikować element <Source>, 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 na błąd
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Przykładowa treść odpowiedzi na błąd
{
"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 zasadach 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 request, response i message są typu message. Więcej informacji o zmiennych w wiadomościach znajdziesz w dokumentacji zmiennych.
Diagnostyka
Zidentyfikuj 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 MessageSprawdź element
<Source>w zasadach JSONThreatProtection (zidentyfikowanych w kroku 1).W tym przykładzie zasady JSONThreatProtection parametr
<Source>ma wartośćmessage.contentzamiastmessage:<?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.contentnie jest typu message, pojawia się błąd:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Rozdzielczość
Sprawdź, czy element <Source> w zasadach JSONThreatProtection, które nie zostały zastosowane, jest ustawiony na zmienną przepływu typu message, która występuje w przepływie, w którym są wykonywane zasady.
Aby poprawić zasadę, możesz zmodyfikować element <Source>, aby określić zmienną typu message. Na przykład w przypadku nieudanej ochrony JSONThreatProtection możesz 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>