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ı ExecutionFailed hatası verebilir. Aşağıdaki tabloda farklı hata türleri ve olası nedenleri listelenmiştir:
Hata türü | Neden |
Nesne giriş adı için uzunluk aşıldı | Bir nesnenin giriş adında izin verilen maksimum dize uzunluğu aşıldı. |
Nesne 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 | Girilen 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 özellik adına sahip bir JSON nesnesi içeriyorsa ortaya çıkar.
Örneğin, politikada <ObjectEntryNameLength>
öğesi 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 politika 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ünün spesifik 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) büyük olup olmadığını kontrol edin. Nesne adının uzunluğu bu sayıyı aşarsa hatanın nedeni budur.Giriş yükü örneği:
{ "number" : 500, "string" : "text" }
Yukarıda gösterilen JSON yükü 2. satırda 6 karakter (ad uzunluğu 6'dır) olan
number
adlı bir özelliğe sahiptir. Nesne adının uzunluğu 5'ten (<ObjectEntryNameLength>
öğ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 name length at line 2
Çözünürlük
JSONThreatProtection politikası, nesne girişi adları, tanımlanan değeri aşan nesnelere karşı koruma sağlamak amaçlıysa hata mesajı beklenir. Bu durumda başka bir işlem yapmanız gerekmez.
Bununla birlikte, yükte herhangi bir sonuç olmadan daha uzun nesne girişi adlarının belirtilebileceğini belirlerseniz <ObjectEntryNameLength>
öğesini, gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, 10 karaktere kadar nesne adlarına izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını 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>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 ve 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-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 (1. adımda tanımlanan) 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 spesifik 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ımda tanımlanır) büyük olup olmadığını kontrol edin. Nesne sayısı nesne girişi sayısını aşıyorsa hatanın nedeni budur.Giriş yükü örneği:
{ "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 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ı, belirli bir eşiği aşan çok sayıda nesne girişi içeren yüklere karşı koruma sağlamak için tasarlanmışsa hata mesajı beklenir. Bu durumda, başka işlem yapmanıza gerek yoktur.
Ancak hiçbir sonuç olmadan yüke daha fazla nesne girişinin dahil edilebileceğini belirlerseniz <ObjectEntryCount>
öğesini, gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, en fazla 10 nesne girişine izin verebileceğinizi düşünüyorsanız JSONThreatProtection politikasını 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>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 öğe sayısına 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 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 not edin (1. Adım'da tanımlanır).Aşağıdaki JSONThreatProtection politika ö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 spesifik satır numarasını (1. Adım'da tanımlanır) inceleyin ve belirtilen dizinin sayısının,
<ArrayElementCount>
öğesinde belirtilen sayıdan (2. Adım'da tanımlanır) daha yüksek olup olmadığını kontrol edin. Dizi öğelerinin sayısı sayıyı aşıyorsa hatanın nedeni budur.Giriş yükü örneği:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
Yukarıda gösterilen JSON Yükü, 3. satırda
models
adlı dizide 5 öğeye sahiptir. Dizi öğelerinin sayısı 3'ten (<ArrayElementCount>
öğ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 array element count at line 3
Çözünürlük
JSONThreatProtection politikasının amacı, belirli bir dizi sayısı eşiğiyle belirli bir yüke karşı koruma sağlamaksa hata mesajıdır. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.
Bununla birlikte, bir dizide daha fazla sayıda öğeye izin verilebileceğini belirlerseniz <ArrayElementCount>
öğesini 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 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ü politikanın <ContainerDepth>
öğesinde belirtilen maksimum kapsayıcı derinliğini aşan kapsayıcı derinliğine sahip 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, 3'lük koruma derinliğiyle sonuçlanır.
Örneğin, <ContainerDepth>
öğesi 3
ise ancak giriş yükünün kapsayıcı derinliği bu sınırı aşıyorsa 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ım'da tanımlanır) not edin.Aşağıdaki JSONThreatProtection politika ö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 spesifik 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ımlanan) yüksek olup olmadığını kontrol edin. Container derinliği sayı sınırını aşıyorsa hatanın nedeni budur.Giriş yükü örneği:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Yukarıda gösterilen JSON yükü, 5. satırda 6'lık kapsayıcı derinliğine sahiptir. Derinlik 5'ten büyük olduğundan, JSONThreatProtection politikasının
<ContainerDepth>
öğ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 container depth at line 5
Çözünürlük
JSONThreatProtection politikası, kapsayıcı derinliği belirtilen değeri aşan yüke karşı koruma sağlamayı amaçlıyorsa hata mesajı beklenir. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.
Ancak daha yüksek kapsayıcı derinliklerinin kabul edilebilir olduğuna karar verirseniz <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 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>
öğesi tarafından izin verilenden fazla karakter içeren değerlere sahip JSON öğeleri içeriyorsa ortaya çıkar.
Örneğin, politikada <StringValueLength>
öğesi 50
değerine ayarlıysa ancak giriş yükünde, değerleri 50'den fazla karakter içeren bir veya daha fazla öğe varsa 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ı,
3
yüktekiJSON-Threat-Protection-1 and
satırıdır.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
1. Adım'da tanımlanan
<StringValueLength>
öğesi için belirtilen değeri not edin.Aşağıdaki JSONThreatProtection politika ö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ünün spesifik satır numarasını (1. Adım'da tanımlanır) inceleyin ve değerin uzunluğunun
<StringValueLength>
öğesi için belirtilen karakter sayısından (2. Adım'da tanımlanır) büyük olup olmadığını kontrol edin. Değerin uzunluğu sınırı aşıyorsa hatanın nedeni budur.Giriş yükü örneği:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Yukarıda gösterilen JSON Yükünde, 3. satırda
Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
değeri 85 karakter olanPlace Name
adlı bir nesne vardır. Değerin uzunluğu,<StringValueLength>
öğesinde belirtilen değer 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ı, belirli bir dize uzunluğunu aşan değerlere sahip yüke karşı koruma sağlamayı amaçladıysa hata mesajı gösterilir. Bu durumda herhangi bir işlem yapmanıza gerek yoktur.
Ancak yükte daha uzun bir değer uzunluğunun belirtilebileceğine karar verirseniz <StringValueLength>
öğesini, gereksinimlerinize göre uygun bir değerle değiştirin.
Örneğin, 90 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>
öğ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ı,
2
yüktekiJSON-Threat-Protection-1 and
satırıdır.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Giriş yükünün spesifik 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.
Giriş yükü örneği:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
Yukarıda gösterilen JSON yükünde, 3. satırda
":"
(iki nokta) simgesi yoktur. Geçerli bir JSON nesnesi olmadığı için ş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ü aktarıldığından emin olun.
Yukarıda açıklanan örnek için JSON yükünü aşağıdaki şekilde 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 biriyse 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, politikanın uygulandığı akışta var olmayan bir değişkene ayarlanırsa ortaya çıkar.
Teşhis
Politika adını ve hata mesajındaki Kaynak değişkenin adını tanımlayın. Ö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 available
1. Adım'da tanımlanan
<Source>
öğesi için belirtilen değeri inceleyin.Aşağıdaki JSONThreatProtection politika ö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. İstekler 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 uygulandığı 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ünde 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ürleri mesaj türündedir. Mesaj değişkenleri hakkında daha fazla bilgi edinmek için Değişkenler referansı bölümünü inceleyin.
Teşhis
Hata mesajındaki 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-1
, Kaynak değişkeni isemessage.content
şeklindedir:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
JSONThreatProtection politikasının
<Source>
öğesini inceleyin (1. adımda tanımlanır).Aşağıdaki JSONThreatProtection politika ö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ığı için ş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 uygulandığı 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ünde bir değişken belirtecek şekilde değiştirebilirsiniz. Örneğin, başarısız JSONThreatProtection öğesinde <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>