Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
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 ich możliwe przyczyny
Zasada JSONThreatProtection może 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 | Przekroczona została maksymalna dozwolona długość ciągu w nazwie wpisu obiektu. |
Przekroczono liczbę wpisów obiektu | 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żenia. |
Przekroczona długość wartości ciągu | Przekroczono maksymalną dozwoloną długość wartości ciągu. |
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 wejściowy ładunek komunikatu 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 w zasadzie określony jako 5, ale wejściowy ładunek wiadomości zawiera właściwość JSON, której nazwa przekracza 5 znaków, jest zgłaszany ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady JSONThreatProtection i numer wiersza, w którym występuje nazwa długiego wpisu. Na przykład w tym komunikacie o błędzie nazwa zasady JSONThreatProtection to
JSON-Threat-Protection-1
, a numer wiersza w pliku danych to 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Sprawdź zasady zidentyfikowane w kroku 1 i zapisz 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ź konkretny numer wiersza (zidentyfikowany w kroku 1) w danych wejściowych i sprawdź, czy długość nazwy obiektu jest większa niż wartość określona w elemencie
<ObjectEntryNameLength>
(zidentyfikowanym w kroku 2). Jeśli nazwa obiektu przekracza tę liczbę, to właśnie jest przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "number" : 500, "string" : "text" }
Powyższy ładunek JSON ma właściwość o nazwie
number
w wierszu 2, która składa się z 6 znaków (długość nazwy wynosi 6). Długość nazwy obiektu przekracza 5 (wartość określona dla elementu<ObjectEntryNameLength>
), więc 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ść, powinien pojawić się komunikat o błędzie. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak stwierdzisz, że dłuższe nazwy wpisów obiektów można podawać w ładunku bez żadnych konsekwencji, zmień <ObjectEntryNameLength>
na odpowiednią wartość zgodnie z wymaganiami.
Jeśli na przykład uważasz, że dozwolone są nazwy obiektów o długości do 10 znaków, zmień 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 obiektu
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 wejściowy ładunek komunikatu 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 ich więcej, zgłaszany jest ten błąd.
Diagnostyka
Sprawdź komunikat o błędzie, aby znaleźć 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 7
Zanotuj wartość określoną w elemencie
<ObjectEntryCount>
zasady (zidentyfikowanym 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ź konkretny numer wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy liczba elementów w ładunku nie 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, 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 przedstawionym 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ę następujący 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 większą liczbą wpisów obiektów niż określony próg, komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz robić nic więcej.
Jeśli jednak stwierdzisz, że ładunek może zawierać więcej wpisów obiektów bez żadnych konsekwencji, zmień <ObjectEntryCount>
na odpowiednią wartość zgodnie z potrzebami.
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>
Przekroczona liczba 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, gdy ładunek wiadomości wejściowej określony przez element <Source>
zawiera tablicę JSON z większą liczbą elementów niż określona w elemencie <ArrayElementCount>
w zasadach.
Jeśli na przykład element <ArrayElementCount>
jest określony jako 3
, a ładunek wejściowy zawiera tablicę JSON z więcej niż 3 elementami, ten błąd jest zgłaszany.
Diagnostyka
Zapoznaj się z komunikatem o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym została przekroczona 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ą dla elementu
<ArrayElementCount>
zasady (podaną 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 (określony w kroku 1) ładunku wejściowego i sprawdź, czy podana w tablicy liczba jest większa od liczby określonej w elemencie
<ArrayElementCount>
(określonym w kroku 2). Jeśli liczba elementów tablicy przekracza liczbę, to jest to przyczyna błędu.Oto przykładowy ładunek danych wejściowych:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
Powyższy ładunek JSON ma 5 elementów w tablicy o nazwie
models
na stronie wiersz 3. Ponieważ liczba elementów tablicy jest większa niż 3 (wartość określony dla elementu<ArrayElementCount>
) pojawia się następujący 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 chronić ładunki o określonym progu liczby tablic, powinien pojawić się komunikat o błędzie. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak stwierdzisz, że dopuszczalna jest większa liczba elementów w tablicy, zmień <ArrayElementCount>
na odpowiednią wartość zgodnie z wymaganiami.
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>
Przekroczona głębokość kontenera
Treść odpowiedzi na błąd
Ruch w środowisku wykonawczym 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, gdy ł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>
w zasadach. Głębokość kontenera to maksymalna dozwolona głębokość zagnieżdżona w elementach JSON. Na przykład tablica zawierająca obiekt, który zawiera obiekt, pozwoliłaby określić głębokość przechowywania wynoszącą 3.
Jeśli na przykład element <ContainerDepth>
ma wartość 3
, a głębokość kontenera w ładunku wejściowym przekracza ten limit, komunikat o błędzie jest zgłaszany.
Diagnostyka
Sprawdź komunikat o błędzie, aby zidentyfikować nazwę zasady JSONThreatProtection i numer wiersza, w którym została przekroczona 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 5
Zanotuj wartość określoną dla elementu
<ContainerDepth>
(zidentyfikowanego 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 wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy głębokość kontenera w ładunku nie jest większa niż wartość określona w elemencie
<ContainerDepth>
(określona w kroku 2). Jeśli głębokość kontenera przekracza liczbę, to jest to przyczyna błędu.Oto przykładowy ładunek wejściowy:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Ładunek JSON pokazany powyżej ma na linii 5 głębokość kontenera 6. Od głębokości jest większa niż 5, wartość określona dla elementu
<ContainerDepth>
argumentu w zasadach JSONThreatProtection pojawia się 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 zasada JSONThreatProtection miała na celu ochronę przed ładunkami, których głębokość kontenera przekracza określoną wartość, powinien pojawić się komunikat o błędzie. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak stwierdzisz, że dopuszczalna jest większa głębokość kontenera, zmień <ContainerDepth>
na odpowiednią wartość zgodnie z wymaganiami.
Jeśli na przykład uważasz, że możesz stosować kontenery z głębokością do 10 znaków, 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>3</ArrayElementCount>
<ContainerDepth>10</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Przekroczono długość 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 wejściowy ładunek komunikatu określony przez element <Source>
zawiera elementy JSON, które mają wartości z większą liczbą znaków niż dozwolona w elemencie <StringValueLength>
.
Jeśli na przykład element <StringValueLength>
w zasadzie ma wartość 50
, ale ładunek wejściowy zawiera co najmniej 1 element, którego wartości zawierają ponad 50 znaków, błąd jest zgłaszany.
Diagnostyka
Zapoznaj się z komunikatem o błędzie, aby zidentyfikować nazwę zasady i numer wiersza, w którym została przekroczona długość ciągu znaków. W tym przykładzie nazwa zasady to
JSON-Threat-Protection-1 and
line 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 (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ź numer 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 dla elementu
<StringValueLength>
(podana w kroku 2). Jeśli długość wartości przekracza limit, jest to przyczyną błędu.Oto przykładowy ładunek wejściowy:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Pokazany powyżej ładunek JSON zawiera obiekt o nazwie
Place Name
, którego wartośćTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
ma 85 znaków w wierszu 3. Ponieważ długość wartości jest większa niż 50, wartość określona w elemencie<StringValueLength>
, 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 zasada JSONThreatProtection miała chronić ładunki z wartościami przekraczającymi określoną długość ciągu znaków, powinien pojawić się komunikat o błędzie. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak uznasz, że w danych możesz podać dłuższą wartość, zmień wartość <StringValueLength>
na odpowiednią wartość zgodnie z potrzebami.
Jeśli na przykład uważasz, że możesz używać wartości o długości do 90 znaków, 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>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 wejściowy ładunek komunikatu określony przez element <Source>
w zasadzie JSONThreatProtection nie jest prawidłowym obiektem JSON.
Diagnostyka
Sprawdź komunikat o błędzie, aby znaleźć nazwę zasady i numer wiersza, w którym wystąpił błąd. W tym przykładzie nazwa zasady to
JSON-Threat-Protection-1 and
line w ładunku2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Sprawdź numer wiersza (określony w kroku 1) ładunku wejściowego i sprawdź, czy obiekt JSON przekazany w ładunku jest rzeczywiście prawidłowym obiektem JSON.
Oto przykładowy ładunek:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
W powyższym ładunku JSON wiersz 3 nie zawiera dwukropka
":"
. Nie jest to prawidłowy obiekt JSON, więc pojawia 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 zawierającego zasadę JSONThreatProtection przekazywany jest prawidłowy wejściowy ładunek JSON.
W przykładzie powyżej 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 to:
- Poza zakresem (niedostępne w konkretnym procesie, w którym są realizowane zasady)
- Nie jest jedną z prawidłowych wartości
request
,response
animessage
Ten błąd może wystąpić na przykład, gdy element <Source>
w zasadach ma wartość zmiennej, która nie istnieje w przepływie, w którym są wykonywane zasady.
Diagnostyka
Wskaż 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 ź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>
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
,response
imessage
. Ponieważ żądania nie mają prawidłowej wartości i nie występują w przepływie, w którym zasada jest wykonywany, pojawia się błąd:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Rozdzielczość
Sprawdź, czy zmienna ustawiona w elemencie <Source>
w nieprawidłowej zasadzie JSONThreatProtection jest ustawiona na request
, response
lub message
i istnieje w przepływie, w którym jest wykonywana zasada.
Aby poprawić przykładową zasadę JSONThreatProtection widoczną powyżej, możesz 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 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 zasadzie JSONThreatProtection to
jest ustawiona 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 wiadomości znajdziesz w artykule Informacje o zmiennych.
Diagnostyka
Identyfikowanie nazwy zasady JSONThreatProtection i nazwy 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>
w zasadach JSONThreatProtection (zidentyfikowanych w kroku 1).W tym przykładzie zasad JSONThreatProtection wartość
<Source>
jest ustawiona namessage.content
zamiastmessage
:<?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
jest ustawiona na zmienną przepływu typu message istniejącą w przepływie, w którym jest wykonywana zasada.
Aby poprawić zasadę, możesz zmodyfikować element <Source>
i określić zmienną
który jest typem komunikatu. Na przykład w przypadku nieudanej ochrony przed zagrożeniami w formacie JSON 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>