Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
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ı nedenler
JSONThreatProtection politikası birçok farklı türde ExecutionFailed hatası oluşturabilir. Aşağıdaki tabloda farklı hata türleri ve olası nedenleri listelenmiştir:
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ı. |
Öğe girişi sayısı aşıldı | 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ı. |
Container derinliği aşıldı | İzin verilen maksimum iç içe yerleştirme derinliği aşıldı. |
Dize değeri uzunluğu aşıldı | Bir 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 ortaya çıkar.
Örneğin, <ObjectEntryNameLength>
öğesi politikada 5 olarak belirtilmişse ancak giriş mesajı yükü, adı 5 karakteri aşan bir JSON özelliğine sahipse 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 politikasının adı
JSON-Threat-Protection-1
ve 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 2
1. adımda tanımladığınız politikayı inceleyin ve
<ObjectEntryNameLength>
öğesinde belirtilen değeri not edin.Örneğin, aşağıdaki JSONThreatProtection politikasında
<ObjectEntryNameLength>
,5
olarak 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ündeki belirli satır numarasını (1. adımda tanımlanır) inceleyin ve nesne adının uzunluğunun
<ObjectEntryNameLength>
öğesinde belirtilen değerden (2. adımda tanımlanır) daha uzun olup olmadığını kontrol edin. Nesne adının uzunluğu bu sayıyı aşarsa hata 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
number
adlı 6 karakterlik (ad uzunluğu 6) bir özellik vardır. 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ının amacı, tanımlanan değeri aşan nesne girişi adlarına sahip yüklere karşı koruma sağlamaksa hata mesajı gösterilmesi beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak, yükte herhangi bir soruna yol açmadan daha uzun nesne girişi adlarının belirtilebileceğini belirlerseniz <ObjectEntryNameLength>
değerini ihtiyaçlarınıza göre uygun bir değere değiştirin.
Örneğin, 10 karaktere kadar nesne adlarına izin verebilirsiniz. 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>
Öğe 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ü, politikanın <ObjectEntryCount>
öğesinde belirtilen değerden daha fazla giriş (özellik) içeren bir JSON nesnesi içeriyorsa ortaya çıkar.
Örneğin, <ObjectEntryCount>
öğesi 5 ise ancak giriş JSON yükünde 5'ten fazla giriş varsa bu hata meydana gelir.
Teşhis
JSONThreatProtection politika adını ve giriş sayısının aşıldığı satır numarasını tanımlamak için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1
ve yükteki satır numarası7
'dır:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Politikanın
<ObjectEntryCount>
öğesinde belirtilen değeri (1. adımda tanımlanır) not edin.Aşağıdaki politika örneğinde
<ObjectEntryCount>
,5
olarak 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ım'da tanımlanır) inceleyin ve yükteki varlık sayısının
<ObjectEntryCount>
öğesi için belirtilen değerden (2. Adım'da tanımlanır) büyük olup olmadığını kontrol edin. Nesne sayısı, nesne girişi sayısını aşıyorsa hata bununla ilgilidir.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şmektedir. Giriş JSON yükündeki nesne girişlerinin sayısı 5'ten (
<ObjectEntryCount>
öğesi için belirtilen değer) büyük olduğundan aşağıdaki 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ının amacı, belirli bir eşiği aşan sayıda nesne girişi içeren yüklere karşı koruma sağlamaksa hata mesajı gösterilmesi beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak, yükü herhangi bir soruna yol açmayacak şekilde daha fazla nesne girişi içerebileceğini belirlerseniz <ObjectEntryCount>
değerini ihtiyaçlarınıza göre uygun bir değere değiştirin.
Örneğin, 10'a kadar nesne girişine 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>10</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Dizi öğesi sayısı 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ü, politikanın <ArrayElementCount>
öğesinde belirtilen sayıdan daha fazla öğe içeren bir JSON dizisi içeriyorsa ortaya çıkar.
Örneğin, <ArrayElementCount>
öğesi 3
olarak belirtilmişse ancak giriş yükü 3'ten fazla öğe içeren bir JSON dizisine sahipse bu hata verilir.
Teşhis
Politika adını ve dizi uzunluğunun 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
ve yükteki satır numarası3
'dır:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Politikanın
<ArrayElementCount>
öğesi için belirtilen değeri (1. adımda tanımlanmıştır) not edin.Aşağıdaki JSONThreatProtection politikası örneğinde
<ArrayElementCount>
,3
olarak 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ım'da tanımlanır) inceleyin ve burada belirtilen dizide,
<ArrayElementCount>
öğesinde belirtilen sayıdan (2. Adım'da tanımlanır) daha yüksek bir sayım olup olmadığını kontrol edin. Dizi öğelerinin sayısı sayıyı aşıyorsa hata bununla ilgilidir.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
models
adlı dizinde 5 öğe vardır. Dizi öğelerinin sayısı 3'ten (<ArrayElementCount>
öğesi için belirtilen değer) büyük olduğu için aşağıdaki 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ının amacı, belirli bir dizi sayısı eşiğine sahip yüklere karşı koruma sağlamaksa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak bir dizi içinde daha fazla öğeye izin verilebileceğini belirlerseniz <ArrayElementCount>
değerini ihtiyaçlarınıza göre uygun bir değere değiştirin.
Örneğin, en fazla 5 dizi öğesine 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>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 hatayı içeren 500 yanıt kodu döndürür:
{ "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ü, kapsayıcı derinliği politikanın <ContainerDepth>
öğesinde belirtilen maksimum kapsayıcı derinliğini aşan JSON öğeleri içeren bir JSON nesnesi içeriyorsa ortaya çıkar. Kapsayıcı derinliği, JSON öğeleri için izin verilen maksimum iç içe yerleştirilmiş derinliktir. Örneğin, nesne içeren bir nesne içeren bir dizi, kapsama derinliğini 3 olarak belirler.
Örneğin, <ContainerDepth>
öğesi 3
ise ancak giriş yükü bu sınırı aşan bir kapsayıcı derinliğine sahipse bu hata atılır.
Teşhis
JSONThreatProtection politikası 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
ve yükteki satır numarası5
şeklindedir.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 politikası örneğinde
<ContainerDepth>
,5
olarak 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ımlanır) inceleyin ve yükteki kapsayıcı derinliğinin,
<ContainerDepth>
öğesinde belirtilen değerden (2. adımda tanımlanır) daha yüksek olup olmadığını kontrol edin. Kapsayıcı derinliği 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ü, 5. satırda 6 kapsayıcı derinliğine sahiptir. Derinlik 5'ten büyük olduğundan JSONThreatProtection politikasının
<ContainerDepth>
öğesi için belirtilen değerde aşağıdaki hata gösterilir: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ının amacı, belirtilen değeri aşan kapsayıcı derinliklerine sahip yüklere karşı koruma sağlamaksa hata mesajı gösterilmesi beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Bununla birlikte, daha yüksek container derinliğinin kabul edilebilir olduğunu belirlerseniz <ContainerDepth>
değerini ihtiyaçlarınıza göre uygun bir değerle değiştirin.
Örneğin, 10'a kadar kapsayıcı derinliğine izin verebilirsiniz. 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>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>
öğesinin izin verdiğinden daha fazla karakter içeren değerlere sahip JSON öğeleri içeriyorsa ortaya çıkar.
Örneğin, <StringValueLength>
öğesi politikada 50
değerine ayarlandıysa ancak giriş yükü, değerleri 50'den fazla karakter içeren bir veya daha fazla öğe içeriyorsa bu hata verilir.
Teşhis
Politika adını ve dize uzunluğunun aşıldığı satır numarasını belirlemek için hata mesajını inceleyin. Aşağıdaki örnekte politika adı
JSON-Threat-Protection-1 and
yükteki satır3
şeklindedir.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
1. adımda tanımlanan
<StringValueLength>
öğesi için belirtilen değeri not edin.Aşağıdaki JSONThreatProtection politikası örneğinde
<StringValueLength>
,50
olarak 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ündeki belirli satır numarasını (1. adımda tanımlanır) inceleyin ve değerin uzunluğunun
<StringValueLength>
öğesi için belirtilen karakter sayısından (2. adımda tanımlanır) daha uzun olup olmadığını kontrol edin. Hatanın nedeni, değerin uzunluğunun sınırı aşmasıdır.Aşağıda örnek bir giriş yükü verilmiştir:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Yukarıda gösterilen JSON yükünde, 3. satırda
Place Name
adlı bir nesne veTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
adlı değerinin 85 karakteri vardır. Değerin uzunluğu,<StringValueLength>
öğesinde belirtilen 50'den büyük olduğu için 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ının amacı, belirli bir dize uzunluğunu aşan değerlere sahip yüklere karşı koruma sağlamaksa hata mesajı görüntülenir. Bu durumda başka bir işlem yapmanız gerekmez.
Ancak yükte daha uzun bir değer uzunluğunun belirtilebileceğine karar verirseniz <StringValueLength>
değerini ihtiyaçlarınıza göre uygun bir değerle değiştirin.
Örneğin, 90 karaktere kadar bir değere izin verebilirsiniz. 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çersiz JSON nesnesi
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>
öğesi tarafından belirtilen giriş mesajı yükü geçerli bir JSON nesnesi değilse ortaya çıkar.
Teşhis
Politika adını ve hatanın oluştuğu satır numarasını belirlemek için hata mesajını inceleyin. Aşağıdaki örnekte politika adı
JSON-Threat-Protection-1 and
yükteki satır2
şeklindedir.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Giriş yükünün belirli satır numarasını (1. Adım'da tanımlanır) inceleyin ve yükte geçirilen 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 üst üste) yok. Bu 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 API Proxy'lerine geçerli bir giriş JSON yükü 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 aşağıdakilerden biriyse oluşur:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
- Geçerli değerlerden biri değil:
request
,response
veyamessage
Örneğin, bu hata, politikadaki <Source>
öğesi, politikanın yürütüldüğü akışta bulunmayan bir değişkene ayarlanırsa ortaya çıkar.
Teşhis
Hata mesajından politika adını ve Source değişkeninin adını belirleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1
ve Kaynak değişkenirequests
'tır:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
1. adımda tanımlanan
<Source>
öğesi için belirtilen değeri inceleyin.Aşağıdaki JSONThreatProtection politikası örneğinde
<Source>
öğesirequests
olarak 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>
öğesi için geçerli değerlerrequest
,response
veyamessage
şeklindedir. requests geçerli bir değer olmadığı ve politikanın yürütüldüğü akışta bulunmadığı için şu hatayı alırsınız:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Çözünürlük
Başarısız 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 örnek JSONThreatProtection politikasını düzeltmek için <Source>
öğesini, istek akışında mevcut olduğundan 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üne ait olmayan bir değişkene ayarlanırsa ortaya çıkar.
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 istek, yanıt ve mesaj türüne sahiptir. Mesaj değişkenleri hakkında daha fazla bilgi edinmek için Değişkenler referansı bölümüne bakın.
Teşhis
Hata mesajından JSONThreatProtection politikasının adını ve Source değişkeninin adını belirleyin. Örneğin, aşağıdaki hata mesajında politika adı
JSON-Threat-Protection-1
, Kaynak değişkeni isemessage.content
'dir:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
JSONThreatProtection politikasının
<Source>
öğesini (1. adımda tanımlanmıştır) inceleyin.Aşağıdaki JSONThreatProtection politikası örneğinde,
<Source>
message
yerinemessage.content
olarak 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.content
, message türü olmadığından aşağıdaki 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 JSONThreatProtection politikasındaki <Source>
öğesinin, politikanın yürütüldüğü akışta bulunan bir mesaj türü akış değişkenine ayarlandığından emin olun.
Politikayı düzeltmek için <Source>
öğesini, mesaj türüne sahip bir değişken belirtecek şekilde değiştirebilirsiniz. Örneğin, başarısız 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>