Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
ExecutionFailed
Código de error
steps.jsonthreatprotection.ExecutionFailed
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Tipos de errores y posibles causas
La política JSONThreatProtection puede generar muchos tipos diferentes de errores ExecutionFailed. En la siguiente tabla se muestran los diferentes tipos de errores y sus posibles causas:
Tipo de error | Causa |
Se ha superado la longitud del nombre de la entrada del objeto | Se ha superado la longitud máxima de cadena permitida en el nombre de entrada de un objeto. |
Se ha superado el número de entradas de objetos | Se ha superado el número máximo de entradas permitido en un objeto. |
Se ha superado el número de elementos de la matriz | Se ha superado el número máximo de elementos permitidos en una matriz. |
Se ha superado la profundidad del contenedor | Se ha superado la profundidad máxima de anidación permitida. |
Se ha superado la longitud del valor de la cadena | Se ha superado la longitud máxima permitida para un valor de cadena. |
Objeto JSON no válido | La carga útil de JSON de entrada no es válida. |
Se ha superado la longitud del nombre de entrada del objeto
Cuerpo de respuesta de error
{ "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" } } }
Cuerpo de respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se produce si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene un objeto JSON con un nombre de propiedad que supera la longitud máxima especificada en el elemento <ObjectEntryNameLength>
.
Por ejemplo, si el elemento <ObjectEntryNameLength>
se especifica como 5 en la política, pero la carga útil del mensaje de entrada tiene una propiedad JSON cuyo nombre supera los 5 caracteres, se producirá este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se produce el nombre de entrada largo. Por ejemplo, en el siguiente mensaje de error, el nombre de la política JSONThreatProtection es
JSON-Threat-Protection-1
y el número de línea de la carga útil es 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Examine la política que ha identificado en el paso 1 y anote el valor especificado en el elemento
<ObjectEntryNameLength>
.Por ejemplo, en la siguiente política JSONThreatProtection,
<ObjectEntryNameLength>
se ha definido como5
:<?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>
Examine el número de línea específico (identificado en el paso 1) de la carga útil de entrada y compruebe si la longitud del nombre del objeto es mayor que el valor especificado en el elemento
<ObjectEntryNameLength>
(identificado en el paso 2). Si la longitud del nombre del objeto supera ese número, ese es el motivo del error.A continuación, se muestra un ejemplo de carga útil de entrada:
{ "number" : 500, "string" : "text" }
La carga útil de JSON que se muestra arriba tiene una propiedad llamada
number
en la línea 2, que tiene 6 caracteres (la longitud del nombre es 6). Como la longitud del nombre del objeto es superior a 5 (el valor especificado para el elemento<ObjectEntryNameLength>
), se produce el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Resolución
Si la política JSONThreatProtection se ha diseñado para proteger contra cargas útiles con nombres de entrada de objeto que superen el valor definido, es normal que aparezca este mensaje de error. En ese caso, no es necesario que hagas nada más.
Sin embargo, si determina que se pueden especificar nombres de entrada de objeto más largos en la carga útil sin ninguna consecuencia, modifique <ObjectEntryNameLength>
con un valor adecuado según sus requisitos.
Por ejemplo, si crees que puedes permitir nombres de objetos de hasta 10 caracteres, modifica la política JSONThreatProtection de la siguiente manera:
<?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>
Se ha superado el recuento de entradas de objetos
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se produce si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene un objeto JSON que incluye más entradas (propiedades) que el valor especificado en el elemento <ObjectEntryCount>
de la política.
Por ejemplo, si el elemento <ObjectEntryCount>
es 5, pero la carga útil JSON de entrada tiene más de 5 entradas, se produce este error.
Diagnóstico
Revisa el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se supera el recuento de entradas. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
y el número de línea de la carga útil es7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Anota el valor especificado en el elemento
<ObjectEntryCount>
de la política (identificado en el paso 1).En el siguiente ejemplo de política,
<ObjectEntryCount>
se define como5
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y comprueba si el número de entidades de la carga útil es mayor que el valor especificado para el elemento
<ObjectEntryCount>
(identificado en el paso 2). Si el número de objetos supera el recuento de entradas de objetos, ese es el motivo del error.A continuación, se muestra un ejemplo de carga útil de entrada:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
En la carga útil de JSON que se muestra arriba, la sexta entrada se produce en la línea 7 (company). Como el número de entradas de objeto en la carga útil JSON de entrada es superior a 5 (el valor especificado para el elemento
<ObjectEntryCount>
), se produce el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Resolución
Si la política JSONThreatProtection se ha diseñado para proteger contra cargas útiles con un número de entradas de objeto que supera un umbral específico, el mensaje de error es el esperado. En ese caso, no es necesario que hagas nada más.
Sin embargo, si determina que se pueden incluir más entradas de objetos en la carga útil sin ninguna consecuencia, modifique <ObjectEntryCount>
con un valor adecuado según sus requisitos.
Por ejemplo, si crees que puedes permitir hasta 10 entradas de objetos, modifica la política JSONThreatProtection de la siguiente manera:
<?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>
Se ha superado el número de elementos de la matriz
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se produce si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene una matriz JSON con un número de elementos superior al especificado en el elemento <ArrayElementCount>
de la política.
Por ejemplo, si el elemento <ArrayElementCount>
se especifica como 3
, pero la carga útil de entrada tiene una matriz JSON con más de 3 elementos, se producirá este error.
Diagnóstico
Revisa el mensaje de error para identificar el nombre de la política y el número de línea en el que se supera la longitud de la matriz. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
y el número de línea de la carga útil es3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Anota el valor especificado para el elemento
<ArrayElementCount>
de la política (identificado en el paso 1).En el siguiente ejemplo de política JSONThreatProtection,
<ArrayElementCount>
se ha definido como3
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y comprueba si la matriz especificada tiene un recuento superior al número especificado en el elemento
<ArrayElementCount>
(identificado en el paso 2). Si el número de elementos de la matriz supera el recuento, esa es la causa del error.A continuación, se muestra un ejemplo de carga útil de entrada:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
La carga útil de JSON que se muestra arriba tiene 5 elementos en la matriz llamada
models
en la línea 3. Como el número de elementos de la matriz es mayor que 3 (el valor especificado para el elemento<ArrayElementCount>
), se produce el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Resolución
Si la política JSONThreatProtection se ha diseñado para proteger frente a cargas útiles con un umbral de recuento de arrays específico, es normal que aparezca el mensaje de error. En este caso, no es necesario que hagas nada más.
Sin embargo, si determinas que se puede permitir un número mayor de elementos en una matriz, modifica <ArrayElementCount>
por un valor adecuado en función de tus requisitos.
Por ejemplo, si crees que puedes permitir hasta 5 elementos de matriz, modifica la política de la siguiente manera:
<?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>
Se ha superado la profundidad del contenedor
Cuerpo de respuesta de error
El tráfico de tiempo de ejecución devuelve un código de respuesta 500 con el siguiente error:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se produce si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene un objeto JSON que incluye elementos JSON con una profundidad de contenedor que supera la profundidad máxima de contenedor especificada en el elemento <ContainerDepth>
de la política. La profundidad del contenedor es la profundidad de anidación máxima permitida para los elementos JSON. Por ejemplo, un array que contenga un objeto que contenga otro objeto tendría una profundidad de contención de 3.
Por ejemplo, si el elemento <ContainerDepth>
es 3
, pero la carga útil de entrada tiene una profundidad de contenedor que supera este límite, se producirá este error.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política JSONThreatProtection y el número de línea en el que se supera la profundidad del contenedor. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
y el número de línea de la carga útil es5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Anota el valor especificado para el elemento
<ContainerDepth>
(identificado en el paso 1).En el siguiente ejemplo de política JSONThreatProtection,
<ContainerDepth>
se ha definido como5
:<?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>
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y comprueba si la profundidad del contenedor en la carga útil es mayor que el valor especificado en el elemento
<ContainerDepth>
(identificado en el paso 2). Si la profundidad del contenedor supera el recuento, esa es la causa del error.A continuación, se muestra un ejemplo de carga útil de entrada:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
La carga útil de JSON que se muestra arriba tiene una profundidad de contenedor de 6 en la línea 5. Como la profundidad es superior a 5, el valor especificado para el elemento
<ContainerDepth>
de la política JSONThreatProtection genera el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Resolución
Si la política JSONThreatProtection se ha diseñado para proteger frente a cargas útiles con profundidades de contenedor que superen el valor especificado, el mensaje de error es el esperado. En este caso, no es necesario que hagas nada más.
Sin embargo, si determina que se pueden usar profundidades de contenedor más altas, modifique <ContainerDepth>
con un valor adecuado según sus requisitos.
Por ejemplo, si crees que puedes permitir profundidades de contenedor de hasta 10, modifica la política de la siguiente manera:
<?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>
Se ha superado la longitud del valor de la cadena
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de respuesta de error de ejemplo
{
"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"
}
}
}
Causa
Este error se produce si la carga útil del mensaje de entrada especificada por el elemento <Source>
contiene elementos JSON que tienen valores con más caracteres de los permitidos por el elemento <StringValueLength>
.
Por ejemplo, si el elemento <StringValueLength>
se define como 50
en la política, pero la carga útil de entrada tiene uno o varios elementos cuyos valores contienen más de 50 caracteres, se produce este error.
Diagnóstico
Revisa el mensaje de error para identificar el nombre de la política y el número de línea en el que se supera la longitud de la cadena. En el siguiente ejemplo, el nombre de la política es
JSON-Threat-Protection-1 and
line en la carga útil3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Anota el valor especificado en el elemento
<StringValueLength>
(identificado en el paso 1).En el siguiente ejemplo de política JSONThreatProtection,
<StringValueLength>
se ha definido como50
:<?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>
Examine el número de línea específico (identificado en el paso 1) de la carga útil de entrada y compruebe si la longitud del valor es mayor que el número de caracteres especificado para el elemento
<StringValueLength>
(identificado en el paso 2). Si la longitud del valor supera el límite, esa es la causa del error.A continuación, se muestra un ejemplo de carga útil de entrada:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
La carga útil JSON que se muestra arriba tiene un objeto llamado
Place Name
cuyo valorTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
tiene 85 caracteres en la línea 3. Como la longitud del valor es superior a 50, el valor especificado en el elemento<StringValueLength>
, se produce el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Resolución
Si la política JSONThreatProtection se ha diseñado para proteger contra cargas útiles con valores que superen una longitud de cadena específica, se espera que se muestre el mensaje de error. En este caso, no es necesario que hagas nada más.
Sin embargo, si determina que se puede especificar una longitud de valor mayor en la carga útil, modifique <StringValueLength>
por un valor adecuado en función de sus requisitos.
Por ejemplo, si cree que puede permitir un valor de hasta 90 caracteres, modifique la política de la siguiente manera:
<?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>
No es un objeto JSON válido
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Cuerpo de respuesta de error de ejemplo
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Causa
Este error se produce si la carga útil del mensaje de entrada especificada por el elemento <Source>
de la política JSONThreatProtection no es un objeto JSON válido.
Diagnóstico
Examina el mensaje de error para identificar el nombre de la política y el número de línea en el que se ha producido el error. En el siguiente ejemplo, el nombre de la política es
JSON-Threat-Protection-1 and
line en la carga útil2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Examina el número de línea específico (identificado en el paso 1) de la carga útil de entrada y comprueba si el objeto JSON que se ha enviado en la carga útil es un objeto JSON válido.
A continuación, se muestra un ejemplo de carga útil de entrada:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
En la carga útil de JSON que se muestra arriba, la línea 3 no tiene
":"
(dos puntos). Como no es un objeto JSON válido, se muestra el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Resolución
Asegúrate de que se transmita una carga útil JSON de entrada válida a cualquier proxy de API que incluya la política JSONThreatProtection.
En el ejemplo descrito anteriormente, modifica la carga útil de JSON de la siguiente manera:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Código de error
steps.jsonthreatprotection.SourceUnavailable
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Cuerpo de respuesta de error de ejemplo
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Causa
Este error se produce si la variable message especificada en el elemento <Source>
de la política JSONThreatProtection es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política)
- No es uno de los valores válidos
request
,response
omessage
Por ejemplo, este error se produce si el elemento <Source>
de la política se asigna a una variable que no existe en el flujo en el que se ejecuta la política.
Diagnóstico
Identifique el nombre de la política y el nombre de la variable de origen en el mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
y la variable Source esrequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Examine el valor especificado para el elemento
<Source>
identificado en el paso 1.En el siguiente ejemplo de política JSONThreatProtection, el elemento
<Source>
se ha definido comorequests
.<?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>
Los valores válidos del elemento
<Source>
sonrequest
,response
omessage
. Como "requests" no es un valor válido y no existe en el flujo en el que se ejecuta la política, se produce el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Resolución
Asegúrate de que la variable definida en el elemento <Source>
de la política JSONThreatProtection fallida se haya definido como request
, response
o message
y que exista en el flujo en el que se ejecuta la política.
Para corregir la política JSONThreatProtection de ejemplo que se muestra arriba, puedes modificar el elemento <Source>
para usar la variable request
, ya que existe en el flujo de solicitudes:
<?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
Código de error
steps.jsonthreatprotection.NonMessageVariable
Cuerpo de respuesta de error
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Cuerpo de respuesta de error de ejemplo
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Causa
Este error se produce si el elemento <Source>
de la política JSONThreatProtection se asigna a una variable que no es del tipo message.
Las variables de tipo de mensaje representan solicitudes y respuestas HTTP completas. Las variables de flujo de Apigee integradas request, response y message son de tipo message. Para obtener más información sobre las variables de mensaje, consulta la referencia de variables.
Diagnóstico
Identifica el nombre de la política JSONThreatProtection y el nombre de la variable Source en el mensaje de error. Por ejemplo, en el siguiente mensaje de error, el nombre de la política es
JSON-Threat-Protection-1
y la variable Source esmessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Examina el elemento
<Source>
de la política JSONThreatProtection (identificado en el paso 1).En el siguiente ejemplo de política JSONThreatProtection,
<Source>
se ha definido comomessage.content
en lugar demessage
:<?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>
Como
message.content
no es de tipo mensaje, se produce el siguiente error:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Resolución
Asegúrate de que el elemento <Source>
de la política JSONThreatProtection fallida se haya definido en una variable de flujo de tipo message que exista en el flujo en el que se ejecuta la política.
Para corregir la política, puedes modificar el elemento <Source>
para especificar una variable de tipo mensaje. Por ejemplo, en JSONThreatProtection, puede especificar el elemento <Source>
como 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>