Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Выполнение не удалось
Код ошибки
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, показанная выше, имеет свойство с именем
number
в строке 2, которое содержит 6 символов (длина имени равна 6). Поскольку длина имени объекта превышает 5 (значение, указанное для элемента<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 содержат более 5 записей, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики 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 (компания). Поскольку количество записей объекта во входных полезных данных 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 с более чем 3 элементами, возникает эта ошибка.
Диагностика
Изучите сообщение об ошибке, чтобы определить имя политики и номер строки, в которой превышена длина массива. Например, в следующем сообщении об ошибке имя политики —
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 содержит 5 элементов в массиве с именем
models
в строке 3. Поскольку количество элементов массива больше 3 (значение, указанное для элемента<ArrayElementCount>
), вы получаете следующую ошибку:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Разрешение
Если политика JSONThreatProtection предназначена для защиты от полезных данных с определенным пороговым значением количества массивов, то ожидается сообщение об ошибке. В этом случае дополнительных действий не требуется.
Однако если вы решите, что в массиве может быть разрешено большее количество элементов, измените <ArrayElementCount>
на подходящее значение в соответствии с вашими требованиями.
Например, если вы считаете, что можете разрешить до 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>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, показанная выше, имеет глубину контейнера 6 в строке 5. Поскольку глубина больше 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 and
строка в полезных данных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 and
строка в полезных данных2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Проверьте конкретный номер строки (указанный на шаге 1) входных полезных данных и проверьте, действительно ли объект JSON, переданный в полезных данных, является допустимым объектом JSON.
Вот пример входной полезной нагрузки:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
В полезных данных JSON, показанных выше, в строке 3 нет
":"
(двоеточие). Поскольку это недопустимый объект JSON, вы получаете сообщение об ошибке:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Разрешение
Убедитесь, что действительные входные полезные данные JSON передаются любому прокси-серверу API, который включает политику JSONThreatProtection.
Для примера, описанного выше, измените полезную нагрузку JSON следующим образом:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
ИсточникНедоступен
Код ошибки
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"
}
}
}
Причина
Эта ошибка возникает, если переменная сообщения , указанная в элементе <Source>
политики JSONThreatProtection, имеет одно из следующих значений:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика)
- Не является одним из допустимых значений
request
,response
илиmessage
Например, эта ошибка возникает, если для элемента <Source>
в политике задана переменная, которая не существует в потоке, в котором выполняется политика.
Диагностика
Определите имя политики и имя исходной переменной из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а переменная Source —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
. Поскольку запросы не являются допустимым значением и не существуют в потоке выполнения политики, вы получаете сообщение об ошибке: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, запрос, ответ и сообщение имеют тип сообщения. Дополнительные сведения о переменных сообщения см. в справочнике по переменным .
Диагностика
Определите имя политики JSONThreatProtection и имя переменной Source из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
JSON-Threat-Protection-1
, а переменная Source —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 задана переменная потока типа сообщения , которая существует в потоке, в котором выполняется политика.
Чтобы исправить политику, вы можете изменить элемент <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>