Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
ExecutionFailed
Код ошибки
steps.jsonthreatprotection.ExecutionFailed
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Типы ошибок и возможные причины
Правило JSONThreatProtection может вызывать ошибки ExecutionFailed разных типов. В таблице ниже перечислены различные типы ошибок и их возможные причины.
| Тип ошибки | Причина |
| Превышена длина названия объекта | Превышена максимальная длина строки, допустимая для названия записи объекта. |
| Превышено количество записей объектов | Превышено максимальное число записей, разрешенное для объекта. |
| Превышено количество элементов массива | Превышено максимальное количество элементов, допустимое в массиве. |
| Превышена глубина контейнера | Превышена максимальная допустимая глубина вложенности. |
| Превышена длина строкового значения | Превышена максимальная длина строкового значения. |
| Недопустимый объект JSON | Недопустимая полезная нагрузка JSON. |
Превышена длина названия объекта
Тело ответа с ошибкой
{ "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" } } }
Пример тела ответа с ошибкой
{
"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"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source>, содержит объект JSON с именем свойства, длина которого превышает максимальную длину, указанную в элементе <ObjectEntryNameLength>.
Например, если в правиле для элемента <ObjectEntryNameLength> указано значение 5, но полезная нагрузка входного сообщения содержит свойство JSON, название которого превышает 5 символов, возникает эта ошибка.
диагностика;
Изучите сообщение об ошибке, чтобы определить название правила JSONThreatProtection и номер строки, в которой встречается длинное название записи. Например, в приведенном ниже сообщении об ошибке название правила JSONThreatProtection –
JSON-Threat-Protection-1, а номер строки в полезной нагрузке – 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2Проверьте правило, указанное на шаге 1, и запишите значение элемента
<ObjectEntryNameLength>.Например, в следующем правиле JSONThreatProtection для
<ObjectEntryNameLength>задано значение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>Проверьте номер строки (определенный на шаге 1) входной полезной нагрузки и убедитесь, что длина названия объекта больше значения, указанного в элементе
<ObjectEntryNameLength>(определенном на шаге 2). Если длина имени объекта превышает это число, то ошибка вызвана именно этим.Вот пример входной полезной нагрузки:
{ "number" : 500, "string" : "text" }В полезной нагрузке JSON, показанной выше, в строке 2 есть свойство
number, длина которого составляет 6 символов. Поскольку длина названия объекта больше пяти (значения, указанного для элемента<ObjectEntryNameLength>), вы получите следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Разрешение
Если правило JSONThreatProtection должно было защищать от полезных нагрузок с названиями записей объектов, превышающими заданное значение, то сообщение об ошибке ожидаемо. В этом случае никаких дополнительных действий не требуется.
Однако если вы решите, что в полезной нагрузке можно указать более длинные названия объектов без каких-либо последствий, измените значение <ObjectEntryNameLength> в соответствии со своими требованиями.
Например, если вы считаете, что допустимая длина имен объектов может составлять до 10 символов, измените правило JSONThreatProtection следующим образом:
<?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>
Превышено количество записей объектов
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа с ошибкой
{
"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"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source>, содержит объект JSON, в котором больше записей (свойств), чем значение, указанное в элементе <ObjectEntryCount> правила.
Например, если элемент <ObjectEntryCount> имеет значение 5, но входная полезная нагрузка JSON содержит более пяти записей, возникает эта ошибка.
диагностика;
Изучите сообщение об ошибке, чтобы определить название правила JSONThreatProtection и номер строки, в которой превышено количество записей. Например, в следующем сообщении об ошибке название правила –
JSON-Threat-Protection-1, а номер строки в полезной нагрузке –7:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7Запишите значение, указанное в элементе
<ObjectEntryCount>правила (определенного на шаге 1).В примере ниже для параметра
<ObjectEntryCount>задано значение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>Проверьте указанную в шаге 1 строку входных данных и убедитесь, что количество объектов в полезной нагрузке превышает значение, заданное для элемента
<ObjectEntryCount>(определенного на шаге 2). Если количество объектов превышает количество записей объектов, это и является причиной ошибки.Вот пример входной полезной нагрузки:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }В полезной нагрузке JSON, показанной выше, шестая запись находится в строке 7 (company). Поскольку количество записей объекта в полезной нагрузке JSON превышает 5 (значение, указанное для элемента
<ObjectEntryCount>), вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Разрешение
Если правило JSONThreatProtection должно было защищать от полезных нагрузок с количеством записей объектов, превышающим определенный порог, то сообщение об ошибке ожидаемо. В этом случае никаких дополнительных действий предпринимать не нужно.
Однако если вы считаете, что в полезную нагрузку можно включить больше записей объектов без каких-либо последствий, измените значение <ObjectEntryCount> на подходящее.
Например, если вы считаете, что можно разрешить до 10 записей объектов, измените правило JSONThreatProtection следующим образом:
<?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>
Превышено количество элементов массива
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа с ошибкой
{
"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"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source>, содержит массив JSON с количеством элементов, превышающим число, указанное в элементе <ArrayElementCount> правил.
Например, если элемент <ArrayElementCount> указан как 3, но входная полезная нагрузка содержит массив JSON с более чем тремя элементами, возникает эта ошибка.
диагностика;
Изучите сообщение об ошибке, чтобы узнать название правила и номер строки, в которой превышена длина массива. Например, в следующем сообщении об ошибке название правила –
JSON-Threat-Protection-1, а номер строки в полезной нагрузке –3:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3Запишите значение, указанное для элемента
<ArrayElementCount>правила (определенного на шаге 1).В приведенном ниже примере правила JSONThreatProtection для параметра
<ArrayElementCount>задано значение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>Проверьте конкретный номер строки (указанный на шаге 1) входной полезной нагрузки и убедитесь, что количество элементов в указанном там массиве больше числа, указанного в элементе
<ArrayElementCount>(определенном на шаге 2). Если количество элементов массива превышает значение счетчика, это и является причиной ошибки.Вот пример входной полезной нагрузки:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }В полезной нагрузке JSON, показанной выше, в массиве
modelsна строке 3 содержится пять элементов. Поскольку количество элементов массива больше трех (значения, указанного для элемента<ArrayElementCount>), вы получите следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Разрешение
Если правило JSONThreatProtection должно было защищать от полезных нагрузок с определенным пороговым значением количества массивов, то сообщение об ошибке ожидаемо. В этом случае никаких дополнительных действий не требуется.
Однако, если вы считаете, что в массиве может быть больше элементов, измените значение <ArrayElementCount> на подходящее.
Например, если вы считаете, что можно разрешить до пяти элементов массива, измените правило следующим образом:
<?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>
Превышена глубина контейнера
Тело ответа с ошибкой
Во время выполнения трафик возвращает код ответа 500 со следующей ошибкой:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа с ошибкой
{
"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"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source>, содержит объект JSON, в котором глубина вложенности элементов JSON превышает максимальную глубину вложенности контейнеров, указанную в элементе <ContainerDepth> правила. Глубина контейнера – это максимальная глубина вложенности элементов JSON. Например, если массив содержит объект, который содержит объект, глубина вложенности будет равна 3.
Например, если элемент <ContainerDepth> имеет значение 3, но глубина контейнера в полезной нагрузке превышает это ограничение, возникает ошибка.
диагностика;
Изучите сообщение об ошибке, чтобы определить название правила JSONThreatProtection и номер строки, в которой превышена глубина контейнера. Например, в приведенном ниже сообщении об ошибке название правила –
JSON-Threat-Protection-1, а номер строки в полезной нагрузке –5.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5Запишите значение, указанное для элемента
<ContainerDepth>(определенного на шаге 1).В приведенном ниже примере правила JSONThreatProtection для параметра
<ContainerDepth>задано значение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>Проверьте номер строки (определенный на шаге 1) входной полезной нагрузки и убедитесь, что глубина контейнера в полезной нагрузке больше значения, указанного в элементе
<ContainerDepth>(определенном на шаге 2). Если глубина контейнера превышает указанное значение, то это и есть причина ошибки.Вот пример входной полезной нагрузки:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }В полезной нагрузке JSON, показанной выше, глубина контейнера на строке 5 составляет 6. Поскольку глубина больше 5, для элемента
<ContainerDepth>правила JSONThreatProtection возникает следующая ошибка:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Разрешение
Если правило JSONThreatProtection должно было защищать от полезных нагрузок с глубиной контейнера, превышающей указанное значение, то сообщение об ошибке ожидаемо. В этом случае никаких дополнительных действий не требуется.
Однако если вы считаете, что допустима большая вложенность контейнеров, измените значение <ContainerDepth> в соответствии со своими требованиями.
Например, если вы считаете, что можно разрешить глубину контейнера до 10, измените правило следующим образом:
<?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>
Превышена длина строкового значения
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа с ошибкой
{
"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"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source>, содержит элементы JSON, значения которых длиннее, чем разрешено элементом <StringValueLength>.
Например, если в правилах для элемента <StringValueLength> задано значение 50, но входная полезная нагрузка содержит один или несколько элементов, значения которых состоят более чем из 50 символов, то будет сгенерирована эта ошибка.
диагностика;
Изучите сообщение об ошибке, чтобы узнать название правила и номер строки, в которой превышена длина строки. В примере ниже название правила –
JSON-Threat-Protection-1 andline в полезной нагрузке3.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3Запишите значение, указанное для элемента
<StringValueLength>(определенного на шаге 1).В приведенном ниже примере правил JSONThreatProtection параметр
<StringValueLength>имеет значение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>Проверьте номер строки (определенный на шаге 1) во входных данных и убедитесь, что длина значения не превышает количество символов, указанное для элемента
<StringValueLength>(определенного на шаге 2). Если длина значения превышает лимит, это и является причиной ошибки.Вот пример входной полезной нагрузки:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }В полезной нагрузке JSON, показанной выше, есть объект
Place Name, значение которогоTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahuсодержит 85 символов в строке 3. Поскольку длина значения превышает 50 символов,<StringValueLength>вы получите следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Разрешение
Если правило JSONThreatProtection должно было защищать от полезных нагрузок со значениями, превышающими определенную длину строки, то сообщение об ошибке ожидаемо. В этом случае никаких дополнительных действий не требуется.
Однако, если вы считаете, что в полезной нагрузке можно указать более длинное значение, измените <StringValueLength> на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можно разрешить значение длиной до 90 символов, измените правило следующим образом:
<?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>
Недопустимый объект JSON
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Пример тела ответа с ошибкой
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Причина
Эта ошибка возникает, если полезная нагрузка входного сообщения, указанная элементом <Source> в правиле JSONThreatProtection, не является допустимым объектом JSON.
диагностика;
Изучите сообщение об ошибке, чтобы узнать название правила и номер строки, в которой произошла ошибка. В примере ниже название правила –
JSON-Threat-Protection-1 andline в полезной нагрузке2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3Проверьте строку, номер которой указан на шаге 1, и убедитесь, что объект JSON, переданный в полезной нагрузке, является действительным.
Вот пример входной полезной нагрузки:
{ "Longitude": 6.11499, "Latitude" 50.76891 }В полезной нагрузке JSON, показанной выше, в строке 3 отсутствует двоеточие
":". Поскольку это недействительный объект JSON, вы получите ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Разрешение
Убедитесь, что в любой прокси API, включающий правило JSONThreatProtection, передается действительная полезная нагрузка JSON.
В описанном выше примере полезную нагрузку JSON нужно изменить следующим образом:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Код ошибки
steps.jsonthreatprotection.SourceUnavailable
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Пример тела ответа с ошибкой
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Причина
Эта ошибка возникает, если переменная message, указанная в элементе <Source> правила JSONThreatProtection, является:
- Вне области действия (недоступно в определенном процессе, в котором выполняется правило).
- Не является одним из допустимых значений:
request,responseилиmessage.
Например, эта ошибка возникает, если элемент <Source> в правиле задан как переменная, которая не существует в потоке, где выполняется правило.
диагностика;
Определите название правила и название переменной "Источник" из сообщения об ошибке. Например, в следующем сообщении об ошибке название правила –
JSON-Threat-Protection-1, а переменная "Источник" –requests:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not availableПроверьте значение элемента
<Source>, указанного на шаге 1.В следующем примере политики JSONThreatProtection элемент
<Source>имеет значение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>Допустимые значения элемента
<Source>:request,responseилиmessage. Поскольку значение "requests" недопустимо и не существует в потоке, в котором выполняется правило, вы получите ошибку:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Разрешение
Убедитесь, что переменная, заданная в элементе <Source> правила JSONThreatProtection, которое не удалось выполнить, имеет значение request, response или message и существует в потоке, в котором выполняется правило.
Чтобы исправить приведенный выше пример правила JSONThreatProtection, можно изменить элемент <Source>, чтобы использовать переменную request, поскольку она существует в потоке запросов:
<?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
Код ошибки
steps.jsonthreatprotection.NonMessageVariable
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Пример тела ответа с ошибкой
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Причина
Эта ошибка возникает, если элемент <Source> в правиле JSONThreatProtection задан как переменная, которая не относится к типу message.
Переменные типа сообщения представляют собой полные HTTP-запросы и ответы. Встроенные переменные потока Apigee Edge request, response и message имеют тип message. Подробнее о переменных в сообщениях…
диагностика;
Определите название правила JSONThreatProtection и название переменной Source из сообщения об ошибке. Например, в следующем сообщении об ошибке название правила –
JSON-Threat-Protection-1, а переменная источника –message.content:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a MessageИзучите элемент
<Source>правил JSONThreatProtection (определенных на шаге 1).В приведенном ниже примере правила JSONThreatProtection для параметра
<Source>задано значениеmessage.contentвместо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.content</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>Поскольку
message.contentне является сообщением, вы получите ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Разрешение
Убедитесь, что элемент <Source> в невыполненном правиле JSONThreatProtection задан как переменная потока типа message, которая существует в потоке, где выполняется правило.
Чтобы исправить правила, измените элемент <Source>, указав переменную типа message. Например, в элементе JSONThreatProtection, который не удалось обработать, можно указать элемент <Source> как 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>