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 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 | Przekroczono maksymalną dozwoloną długość ciągu znaków w nazwie wpisu obiektu. |
Przekroczono liczbę wpisów obiektów | 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 | Maksymalna dozwolona głębokość umieszczania została przekroczona. |
Przekroczona długość wartości ciągu | Przekroczona maksymalna dopuszczalna długość ciągu. |
Nieprawidłowy obiekt JSON | Dane wejściowe w formacie JSON są nieprawidłowe. |
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 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 długa nazwa wpisu. Na przykład w następującym 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ź zasadę zidentyfikowaną w kroku 1 i zanotuj wartość określoną w elemencie
<ObjectEntryNameLength>
.Na przykład w tych zasadach JSONThreatProtection wartość
<ObjectEntryNameLength>
jest ustawiona 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>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 długość nazwy obiektu przekracza tę liczbę, jest to przyczyną błędu.Oto przykładowy ładunek:
{ "number" : 500, "string" : "text" }
Dane w formacie JSON pokazane powyżej zawierają w wierszu 2 właściwość o nazwie
number
, która ma 6 znaków (długość nazwy to 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 chronić przed ładunkami z nazwami wpisów obiektów, które przekraczają zdefiniowaną wartość, to komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic 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 można 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 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 więcej niż 5 wpisów, pojawia się 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 zasad
<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) w danych wejściowych i sprawdź, czy liczba elementów w danych jest większa niż wartość określona dla elementu
<ObjectEntryCount>
(zidentyfikowanego w kroku 2). Jeśli liczba obiektów przekracza liczbę wpisów obiektów, jest to przyczyną błędu.Oto przykładowy ładunek:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
W pokazanym powyżej ładunku JSON 6. element znajduje się w wierszu 7 (firma). Ponieważ liczba wpisów obiektów w danych wejściowych 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 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 podejmować żadnych dodatkowych działań.
Jeśli jednak stwierdzisz, że w pliku danych można uwzględnić więcej wpisów obiektów bez żadnych konsekwencji, zmień wartość <ObjectEntryCount>
na odpowiednią wartość zgodnie ze swoimi wymaganiami.
Jeśli na przykład uważasz, że możesz zezwolić na maksymalnie 10 wejść obiektu, zmień 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, 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>
ma wartość 3
, ale ładunek wejściowy zawiera tablicę JSON z większą liczbą niż 3 elementy, pojawia się ten błąd.
Diagnostyka
W komunikacie o błędzie sprawdź nazwę zasady i numer wiersza, w którym długość tablicy została przekroczona. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a numer wiersza w pliku danych to3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Zanotuj wartość elementu
<ArrayElementCount>
w zasadzie (zidentyfikowanego w kroku 1).W tym przykładzie zasad JSONThreatProtection wartość
<ArrayElementCount>
jest ustawiona na3
:<?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) z danymi wejściowymi i sprawdź, czy tablica określona w tym miejscu ma większą liczbę niż liczba określona 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:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
Ładunek JSON pokazany powyżej zawiera 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>
), występuje 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 chronić przed ładunkami z określonym progiem liczby tablic, to komunikat o błędzie jest oczekiwany. W tym przypadku nie musisz nic robić.
Jeśli jednak uznasz, że w tablicy może być większa liczba elementów, zmień wartość parametru <ArrayElementCount>
na odpowiednią wartość zgodnie ze swoimi 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 czasie wykonywania 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żania elementów JSON. Na przykład tablica zawierająca obiekt, który zawiera obiekt, spowoduje, że głębokość zawierania wyniesie 3.
Jeśli na przykład element <ContainerDepth>
ma wartość 3
, ale głębokość kontenera w danych wejściowych przekracza ten limit, pojawia się 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 pliku danych 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 zasad JSONThreatProtection wartość
<ContainerDepth>
jest ustawiona 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>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 głębokość kontenera w tym ładunku jest większa niż wartość określona w elemencie
<ContainerDepth>
(zidentyfikowanym w kroku 2). Jeśli głębokość kontenera przekracza liczbę, to jest to przyczyna błędu.Oto przykładowy ładunek:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Ładunek JSON pokazany powyżej ma na linii 5 głębokość kontenera 6. Ponieważ głębokość jest większa niż 5, wartość określona dla elementu
<ContainerDepth>
zasady JSONThreatProtection powoduje wyświetlenie 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 chronić przed ładunkami o głębokości kontenera przekraczającej określoną wartość, należy spodziewać się komunikatu o błędzie. W tym przypadku nie musisz nic robić.
Jeśli jednak uznasz, że akceptowalne są większe głębokości kontenera, zmień wartość parametru <ContainerDepth>
na odpowiednią, biorąc pod uwagę swoje wymagania.
Jeśli np. uważasz, że możesz zezwolić na głębokość kontenera do 10, 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 ładunek wiadomości wejściowej określony przez element <Source>
zawiera elementy JSON, których wartości mają więcej znaków niż dozwolone przez element <StringValueLength>
.
Jeśli na przykład element <StringValueLength>
jest w zasadach ustawiony na 50
, ale ładunek wejściowy zawiera co najmniej 1 element, którego wartości zawierają więcej niż 50 znaków, pojawia się ten błąd.
Diagnostyka
W komunikacie o błędzie sprawdź nazwę zasady i numer wiersza, w którym długość ciągu została przekroczona. 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ść elementu
<StringValueLength>
(zidentyfikowanego w kroku 1).W tym przykładzie zasad JSONThreatProtection wartość
<StringValueLength>
jest ustawiona na50
:<?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) z danymi wejściowymi i sprawdź, czy długość wartości jest większa niż liczba znaków określona dla elementu
<StringValueLength>
(zidentyfikowanego w kroku 2). Jeśli długość wartości przekracza limit, to właśnie jest przyczyną błędu.Oto przykładowy ładunek:
{ "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, czyli 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 chronić przed ładunkami o wartościach przekraczających określony ciąg znaków, to komunikat o błędzie jest oczekiwany. W takim przypadku nie musisz nic więcej robić.
Jeśli jednak uznasz, że w danych możesz podać dłuższą wartość, zmień parametr <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, gdy ł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 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
w pliku danych2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Sprawdź konkretny wiersz (zidentyfikowany 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 pokazanym powyżej ładunku JSON wiersz 3 nie zawiera znaku
":"
(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ść
Upewnij się, że prawidłowy ładunek danych JSON jest przekazywany do każdego interfejsu API, który zawiera zasadę JSONThreatProtection.
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>
w zasadach JSONThreatProtection jest:
- Poza zakresem (niedostępne w konkretnym procesie, w którym są realizowane zasady)
- nie jest jedną z prawidłowych wartości
request
,response
lubmessage
;
Ten błąd może wystąpić na przykład, gdy element <Source>
w zasadzie ma wartość zmiennej, która nie istnieje w przepływie, w którym jest wykonywana zasada.
Diagnostyka
W komunikacie o błędzie odszukaj nazwę zasady i nazwę zmiennej Source. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a zmienne Source torequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Sprawdź wartość określoną dla elementu
<Source>
zidentyfikowanego w kroku 1.W tym przykładzie reguły 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
lubmessage
. Ponieważ requests nie jest prawidłową wartością i nie występuje w przepływie, 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>
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 pokazaną 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 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 procesu Apigee Edge żądania, odpowiedzi i wiadomości mają typ „komunikat”. Więcej informacji o zmiennych wiadomości znajdziesz w artykule o zmiennych.
Diagnostyka
Z komunikatu o błędzie ustal nazwę zasady JSONThreatProtection i nazwę zmiennej Source. Na przykład w tym komunikacie o błędzie nazwa zasady to
JSON-Threat-Protection-1
, a zmienne Source 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ść
Upewnij się, że element <Source>
w nieudanej regule JSONThreatProtection jest ustawiony jako zmienna przepływu typu message, która istnieje w przepływie, w którym działa zasada.
Aby poprawić zasady, możesz zmodyfikować element <Source>
, aby określić zmienną typu message. 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>