Apigee Edge belgelerini görüntülüyorsunuz.
Git:
Apigee X belgeleri. 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 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ı. |
Kapsayıcı derinliği aşıldı | İzin verilen maksimum iç içe yerleştirilmiş derinlik 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ü, özellik adı <ObjectEntryNameLength>
öğesinde belirtilen maksimum uzunluğu aşan 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 geçtiği satır numarasını tanımlamak için hata mesajını inceleyin. Örneğin, aşağıdaki hata mesajında JSONThreatProtection politikasının adı
JSON-Threat-Protection-1
, yükteki satır numarası ise 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 belirlediğiniz politikayı inceleyin ve
<ObjectEntryNameLength>
öğesinde belirtilen değere dikkat 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ünün belirli satır numarasını (1. Adım'da tanımlanır) inceleyin ve nesne adının uzunluğunun
<ObjectEntryNameLength>
öğesinde belirtilen değerden (2. Adım'da tanımlanır) uzun 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ü görebilirsiniz:
{ "number" : 500, "string" : "text" }
Yukarıda gösterilen JSON yükü, 2. satırda
number
adlı ve 6 karakterden oluşan (ad uzunluğu 6'dır) bir özelliğe sahiptir. 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ş adlarına sahip yüke karşı koruma sağlamak olsaydı hata mesajı almanız beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Bununla birlikte, daha uzun nesne giriş adlarının hiçbir sonuç olmadan yükte belirtilebileceğini belirlerseniz <ObjectEntryNameLength>
değerini ihtiyaçlarınıza göre uygun bir değerle değiştirin.
Örneğin, uzunluğu 10 karaktere kadar olan nesne adları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ü, 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ü 5'ten fazla giriş içeriyorsa bu hata verilir.
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
şeklindedir:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Politikanın
<ObjectEntryCount>
öğesinde (1. adımda tanımlanmıştır) belirtilen değeri 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ımda tanımlanır) inceleyin ve yükteki öğe sayısının
<ObjectEntryCount>
öğesi için belirtilen değerden (2. adımda tanımlanır) daha yüksek olup olmadığını kontrol edin. Nesnelerin sayısı nesne giriş sayısını aşıyorsa hatanın nedeni budur.Aşağıda örnek bir giriş yükü görebilirsiniz:
{ "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 fazla olduğu için (
<ObjectEntryCount>
öğesi için 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 object entry count at line 7
Çözünürlük
JSONThreatProtection politikasının amacı, belirli bir eşiği aşan çok sayıda nesne girişine sahip yüke karşı koruma sağlamaksa bu, hata mesajı beklenir. Bu durumda herhangi 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, en fazla 10 nesne girişine izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını şu ş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>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 fazla öğeye sahip 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 meydana gelir.
Teşhis
Politika adını ve dizi uzunluğunun 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ı3
şeklindedir: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 not edin (1. adımda tanımlanır).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 hatanın nedeni budur.Aşağıda örnek bir giriş yükü görebilirsiniz:
{ "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 (değer<ArrayElementCount>
öğesi için belirtilir) ş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ının amacı, belirli bir dizi sayısı eşiğine sahip yüklere karşı koruma sağlamaksa hata mesajı beklenir. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.
Bununla birlikte, bir dizide daha yüksek sayıda öğeye izin verilebileceğini belirlerseniz <ArrayElementCount>
öğesini gereksinimlerinize 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 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 hatayla birlikte bir 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
'tır.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 özel satır numarasını (1. Adım'da tanımlanır) inceleyin ve yükteki konteyner derinliğinin
<ContainerDepth>
öğesinde belirtilen değerden (2. Adım'da tanımlanır) 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 container derinliği 6'dır. Derinlikten beri 5'ten büyükse şunun
<ContainerDepth>
öğesi için belirtilen değer: JSONThreatProtection politikasında ş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ının amacı, container derinlikleri belirtilen değeri aşan yüklere karşı koruma sağlamaksa hata mesajı görüntülenir. 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 ihtiyaçlarınıza göre uygun bir değere değiştirin.
Örneğin, 10'a kadar container derinliğine 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>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, politikadaki <StringValueLength>
öğesi 50
olarak ayarlanmışsa ancak giriş yükü, değerleri 50'den fazla karakter içeren bir veya daha fazla öğe içeriyorsa bu hata meydana gelir.
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. 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, 3. satırda
Place Name
adlı bir nesne veTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
adlı değerinin 85 karakteri vardır. Değerin uzunluğu<StringValueLength>
öğesinde belirtilen değer 50 ise şu hata oluştu: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ç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, giriş mesajı yükü <Source>
öğesi tarafından belirtilirse ortaya çıkar
JSONThreatProtection politikası, geçerli bir JSON nesnesi değil.
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üklü (2
) satırıdır.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) işareti yoktur. 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 şunlardan biri olduğunda ortaya çıkar:
- Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
request
,response
veyamessage
geçerli değerlerinden biri değil
Örneğin bu hata, politikadaki <Source>
öğesi
değişkenin sağlanmasını kolaylaştırır.
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. Çünkü istekleri geçerli bir değer değil ve politikanın ihlal edildiği akışta uygulaması yürütülüyorsa ş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. Alıcı: mesaj değişkenleri hakkında daha fazla bilgi için Değişkenler referansı başlıklı makaleyi inceleyin.
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
ve Kaynak değişkenimessage.content
ise:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
JSONThreatProtection politikasının (1. adımda tanımlanır)
<Source>
öğesini 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
, mesaj 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 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 bir değişken belirtecek şekilde değiştirebilirsiniz.
reklam grubudur. Örneğin, başarısız JSONThreatProtection dosyasında
<Source>
öğesini message
olarak belirtin:
<?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>