Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
ExecutionFailed
Hata Kodu
steps.jsonthreatprotection.ExecutionFailed
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Hata türleri ve olası nedenleri
JSONThreatProtection politikası birçok farklı türde ExecutionFailed hatası verebilir. Aşağıdaki tabloda, farklı hata türleri ve olası nedenleri listelenmektedir:
| Hata türü | Neden |
| Nesne girişi adı uzunluğu aşıldı | Bir nesnenin giriş adında izin verilen maksimum dize uzunluğu aşıldı. |
| Aşılan nesne girişi sayısı | Bir nesnede izin verilen maksimum giriş sayısı aşıldı. |
| Dizi öğesi sayısı aşıldı | Bir dizide izin verilen maksimum öğe sayısı aşıldı. |
| Kapsayıcı derinliği aşıldı | İzin verilen maksimum iç içe yerleştirme derinliği aşıldı. |
| Dize değeri uzunluğu aşıldı | Dize değeri için izin verilen maksimum uzunluk aşıldı. |
| Geçersiz JSON nesnesi | Giriş JSON yükü geçersiz. |
Nesne girişi adı uzunluğu aşıldı
Hata yanıtı gövdesi
{ "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" } } }
Örnek hata yanıtı gövdesi
{
"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"
}
}
}
Neden
Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, <ObjectEntryNameLength> öğesinde belirtilen maksimum uzunluğu aşan bir özellik adına sahip bir JSON nesnesi içeriyorsa oluşur.
Örneğin, politikada <ObjectEntryNameLength> öğesi 5 olarak belirtilmişse ancak giriş mesajı yükünde adı 5 karakteri aşan bir JSON özelliği varsa bu hata verilir.
Teşhis
JSONThreatProtection politika adını ve uzun giriş adının bulunduğu satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında JSONThreatProtection politika adı
JSON-Threat-Protection-1ve yükteki satır numarası 2'dir.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 21. adımda belirlediğiniz politikayı inceleyin ve
<ObjectEntryNameLength>öğesinde belirtilen değeri not edin.Örneğin, aşağıdaki JSONThreatProtection politikasında
<ObjectEntryNameLength>,5olarak ayarlanmıştır:<?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>Giriş yükünün belirli satır numarasını (1. adımda tanımlanmıştır) inceleyin ve nesne adının uzunluğunun
<ObjectEntryNameLength>öğesinde (2. adımda tanımlanmıştır) belirtilen değerden büyük olup olmadığını kontrol edin. Nesne adının uzunluğu bu sayıyı aşıyorsa hatanın nedeni budur.Aşağıda örnek bir giriş yükü verilmiştir:
{ "number" : 500, "string" : "text" }Yukarıda gösterilen JSON yükünde, 2. satırda
numberadlı bir özellik var. Bu özellik 6 karakter uzunluğunda (ad uzunluğu 6). Nesne adının uzunluğu 5'ten (<ObjectEntryNameLength>öğesi için belirtilen değer) büyük olduğundan şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Çözünürlük
JSONThreatProtection politikası, tanımlanan değeri aşan nesne girişi adlarına sahip yüklerden korunmak için tasarlanmışsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak daha uzun nesne girişi adlarının, yükte herhangi bir sonuç olmadan belirtilebileceğini belirlerseniz <ObjectEntryNameLength> değerini gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, nesne adlarının 10 karaktere kadar uzun olmasına izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını aşağıdaki gibi değiştirin:
<?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>
Nesne girişi sayısı aşıldı
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Örnek hata yanıtı gövdesi
{
"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"
}
}
}
Neden
Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, politikadaki <ObjectEntryCount> öğesinde belirtilen değerden daha fazla giriş (özellik) içeren bir JSON nesnesi içeriyorsa oluşur.
Örneğin, <ObjectEntryCount> öğesi 5 ise ancak giriş JSON yükünde 5'ten fazla giriş varsa bu hata verilir.
Teşhis
JSONThreatProtection politika adını ve giriş sayısının aşıldığı satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1ve yükteki satır numarası7'dir:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7Politikanın
<ObjectEntryCount>öğesinde belirtilen değeri (1. adımda tanımlanmıştır) not edin.Aşağıdaki politika örneğinde,
<ObjectEntryCount>değeri5olarak ayarlanmıştır:<?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>Giriş yükünün belirli satır numarasını (1. adımda tanımlanmıştır) inceleyin ve yükteki varlık sayısının,
<ObjectEntryCount>öğesi için belirtilen değerden (2. adımda tanımlanmıştır) büyük olup olmadığını kontrol edin. Nesne sayısı, nesne girişi sayısını aşıyorsa hatanın nedeni budur.Aşağıda örnek bir giriş yükü verilmiştir:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }Yukarıda gösterilen JSON yükünde 6. giriş 7. satırda (şirket) gerçekleşir. Giriş JSON yükündeki nesne girişlerinin sayısı 5'ten (
<ObjectEntryCount>öğesi için belirtilen değer) büyük olduğundan şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Çözünürlük
JSONThreatProtection politikası, belirli bir eşiği aşan sayıda nesne girişi içeren yüklerden korunmak için tasarlanmışsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak, yükte herhangi bir sonuç olmadan daha fazla nesne girişi eklenebileceğini belirlerseniz <ObjectEntryCount> değerini gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, en fazla 10 nesne girişi sağlayabileceğinizi düşünüyorsanız JSONThreatProtection politikasını aşağıdaki gibi değiştirin:
<?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>
Dizi öğesi sayısı sınırı aşıldı
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Örnek hata yanıtı gövdesi
{
"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"
}
}
}
Neden
Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, politikadaki <ArrayElementCount> öğesinde belirtilen sayıdan daha fazla öğe içeren bir JSON dizisi içeriyorsa oluşur.
Örneğin, <ArrayElementCount> öğesi 3 olarak belirtilmişse ancak giriş yükünde 3'ten fazla öğe içeren bir JSON dizisi varsa bu hata verilir.
Teşhis
Dizi uzunluğunun aşıldığı politika adını ve satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1ve yükteki satır numarası3'dir:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3Politikanın
<ArrayElementCount>öğesi için belirtilen değeri not edin (1. adımda tanımlanmıştır).Aşağıdaki JSONThreatProtection politika örneğinde
<ArrayElementCount>,3olarak ayarlanmıştır:<?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>Giriş yükünün belirli satır numarasını (1. adımda tanımlanmıştır) inceleyin ve orada belirtilen dizinin,
<ArrayElementCount>öğesinde (2. adımda tanımlanmıştır) belirtilen sayıdan daha yüksek olup olmadığını kontrol edin. Dizi öğelerinin sayısı, sayıyı aşıyorsa hatanın nedeni budur.Aşağıda örnek bir giriş yükü verilmiştir:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }Yukarıda gösterilen JSON yükünde, 3. satırda
modelsadlı dizide 5 öğe var. Dizi öğelerinin sayısı 3'ten (<ArrayElementCount>öğesi için belirtilen değer) büyük olduğu için şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Çözünürlük
JSONThreatProtection politikası, belirli bir dizi sayısı eşiğine sahip yüklerden korunmak için tasarlanmışsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak bir dizide daha fazla sayıda öğeye izin verilebileceğini belirlerseniz <ArrayElementCount> değerini gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, en fazla 5 dizi öğesine izin verebileceğinizi düşünüyorsanız politikayı aşağıdaki şekilde değiştirin:
<?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>
Kapsayıcı derinliği aşıldı
Hata yanıtı gövdesi
Çalışma zamanı trafiği, aşağıdaki hatayla birlikte 500 yanıt kodu döndürüyor:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Örnek hata yanıtı gövdesi
{
"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"
}
}
}
Neden
Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, politikadaki <ContainerDepth> öğesinde belirtilen maksimum kapsayıcı derinliğini aşan kapsayıcı derinliğine sahip JSON öğeleri içeren bir JSON nesnesi içeriyorsa oluşur. Kapsayıcı derinliği, JSON öğeleri için izin verilen maksimum iç içe derinliktir. Örneğin, bir nesne içeren bir nesne içeren bir dizi, kapsama derinliğinin 3 olmasına neden olur.
Örneğin, <ContainerDepth> öğesi 3 ise ancak giriş yükü bu sınırı aşan bir kapsayıcı derinliğine sahipse bu hata verilir.
Teşhis
JSONThreatProtection politika adını ve kapsayıcı derinliğinin aşıldığı satır numarasını belirlemek için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1, yükteki satır numarası ise5'dir.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5<ContainerDepth>öğesi için belirtilen değeri (1. adımda tanımlanmıştır) not edin.Aşağıdaki JSONThreatProtection politika örneğinde
<ContainerDepth>,5olarak ayarlanmıştır:<?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>Giriş yükünün belirli satır numarasını (1. adımda tanımlanmıştır) inceleyin ve yükteki kapsayıcı derinliğinin
<ContainerDepth>öğesinde (2. adımda tanımlanmıştır) belirtilen değerden yüksek olup olmadığını kontrol edin. Kapsayıcı derinliği bu sayıyı aşıyorsa hatanın nedeni budur.Aşağıda örnek bir giriş yükü verilmiştir:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }Yukarıda gösterilen JSON yükünün 5. satırda 6 kapsayıcı derinliği vardır. Derinlik 5'ten büyük olduğundan, JSONThreatProtection politikasının
<ContainerDepth>öğesi için belirtilen değerde şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Çözünürlük
JSONThreatProtection politikası, belirtilen değeri aşan kapsayıcı derinliklerine sahip yüklerden korunmak için tasarlanmışsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak daha yüksek kapsayıcı derinliklerinin kabul edilebilir olduğunu belirlerseniz <ContainerDepth> değerini, gereksinimlerinize uygun bir değerle değiştirin.
Örneğin, 10'a kadar kapsayıcı derinliğine izin verebileceğinizi düşünüyorsanız politikayı aşağıdaki şekilde değiştirin:
<?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>
Dize değeri uzunluğu aşıldı
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Örnek hata yanıtı gövdesi
{
"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"
}
}
}
Neden
Bu hata, <Source> öğesi tarafından belirtilen giriş mesajı yükü, <StringValueLength> öğesi tarafından izin verilenden daha fazla karakter içeren değerlere sahip JSON öğeleri içeriyorsa oluşur.
Örneğin, politikada <StringValueLength> öğesi 50 olarak ayarlanmışsa ancak giriş yükünde değerleri 50'den fazla karakter içeren bir veya daha fazla öğe varsa bu hata verilir.
Teşhis
Dize uzunluğunun aşıldığı politika adını ve satır numarasını belirlemek için hata mesajını inceleyin. Aşağıdaki örnekte politika adı,
JSON-Threat-Protection-1 andyükteki satır3'dır.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3(1. adımda belirlenen)
<StringValueLength>öğesi için belirtilen değeri not edin.Aşağıdaki JSONThreatProtection politika örneğinde
<StringValueLength>,50olarak ayarlanmıştır:<?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>Giriş yükünün belirli satır numarasını (1. adımda tanımlanmıştır) inceleyin ve değerin uzunluğunun,
<StringValueLength>öğesi için belirtilen karakter sayısından (2. adımda tanımlanmıştır) büyük olup olmadığını kontrol edin. Değerin uzunluğu sınırı aşıyorsa hatanın nedeni budur.Aşağıda örnek bir giriş yükü verilmiştir:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }Yukarıda gösterilen JSON yükünde, değeri
TaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahuolanPlace Nameadlı bir nesne var. Bu değer, 3. satırda 85 karakterden oluşuyor. Değerin uzunluğu 50'den fazla olduğundan (<StringValueLength>öğesinde belirtilen değer) aşağıdaki hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Çözünürlük
JSONThreatProtection politikası, belirli bir dize uzunluğunu aşan değerlere sahip yüklerden korunmak için tasarlanmışsa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak yükte daha uzun bir değer uzunluğu belirtilebileceğini belirlerseniz <StringValueLength> değerini gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, 90 karakter uzunluğuna kadar bir değere izin verebileceğinizi düşünüyorsanız politikayı aşağıdaki gibi değiştirin:
<?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>
Geçerli JSON nesnesi değil
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Örnek hata yanıtı gövdesi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Neden
Bu hata, JSONThreatProtection politikasındaki <Source> öğesiyle
belirtilen giriş mesajı yükü geçerli bir JSON nesnesi değilse oluşur.
Teşhis
Hata mesajını inceleyerek politika adını ve hatanın oluştuğu satır numarasını belirleyin. Aşağıdaki örnekte politika adı,
JSON-Threat-Protection-1 andyükteki satır2'dır.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3Giriş yükünün belirli satır numarasını (1. adımda tanımlanmıştır) inceleyin ve yükte iletilen JSON nesnesinin gerçekten geçerli bir JSON nesnesi olup olmadığını kontrol edin.
Aşağıda örnek bir giriş yükü verilmiştir:
{ "Longitude": 6.11499, "Latitude" 50.76891 }Yukarıda gösterilen JSON yükünde 3. satırda
":"(iki nokta) yok. Geçerli bir JSON nesnesi olmadığından şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Çözünürlük
JSONThreatProtection politikasını içeren tüm API proxy'lerine geçerli bir giriş JSON yükünün iletildiğinden emin olun.
Yukarıda açıklanan örnek için JSON yükünü aşağıdaki gibi değiştirin:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Hata Kodu
steps.jsonthreatprotection.SourceUnavailable
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Örnek hata yanıtı gövdesi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Neden
Bu hata, JSONThreatProtection politikasının <Source> öğesinde belirtilen message değişkeni şu durumlarda oluşur:
- Kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz)
request,responseveyamessagegeçerli değerlerinden biri değil
Örneğin, bu hata, politikadaki <Source> öğesi, politikanın yürütüldüğü akışta bulunmayan bir değişkene ayarlanırsa oluşur.
Teşhis
Hata mesajından politika adını ve Kaynak değişkeninin adını belirleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1, Kaynak değişkeni iserequests'dir:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available1. adımda tanımlanan
<Source>öğesi için belirtilen değeri inceleyin.Aşağıdaki JSONThreatProtection politika örneğinde,
<Source>öğesirequestsolarak ayarlanmıştır.<?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>öğesinin geçerli değerlerirequest,responseveyamessage'dir. requests geçerli bir değer olmadığından ve politikanın yürütüldüğü akışta bulunmadığından şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Çözünürlük
Başarısız olan JSONThreatProtection politikasının <Source> öğesinde ayarlanan değişkenin request, response veya message olarak ayarlandığından ve politikanın yürütüldüğü akışta bulunduğundan emin olun.
Yukarıda gösterilen JSONThreatProtection politikasını düzeltmek için <Source> öğesini, istek akışında mevcut olduğu için request değişkenini kullanacak şekilde değiştirebilirsiniz:
<?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
Hata Kodu
steps.jsonthreatprotection.NonMessageVariable
Hata yanıtı gövdesi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Örnek hata yanıtı gövdesi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Neden
Bu hata, JSONThreatProtection politikasındaki <Source> öğesi message türünde olmayan bir değişkene ayarlanırsa oluşur.
Mesaj türü değişkenleri, HTTP isteklerinin ve yanıtlarının tamamını temsil eder. Yerleşik Apigee Edge akış değişkenleri request, response ve message, ileti türündedir. Mesaj değişkenleri hakkında daha fazla bilgi edinmek için Değişkenler referansı başlıklı makaleyi inceleyin.
Teşhis
Hata mesajından JSONThreatProtection politika adını ve Kaynak değişkeninin adını belirleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1ve Kaynak değişkenimessage.content'dir:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a MessageJSONThreatProtection politikasının
<Source>öğesini (1. adımda tanımlanmıştır) inceleyin.Aşağıdaki JSONThreatProtection politika örneğinde,
<Source>değerimessageyerinemessage.contentolarak ayarlanmıştır:<?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.contentileti türünde olmadığından şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Çözünürlük
Başarısız olan JSONThreatProtection politikasındaki <Source> öğesinin, politikanın yürütüldüğü akışta bulunan bir message türü akış değişkenine ayarlandığından emin olun.
Politikayı düzeltmek için <Source> öğesini değiştirerek mesaj türünde bir değişken belirtebilirsiniz. Örneğin, başarısız olan JSONThreatProtection'da <Source> öğesini message olarak belirtebilirsiniz:
<?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>