Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
InvalidIndex
Hata mesajı
API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:
Error in deployment for environment [environment] The revision is deployed, but traffic cannot flow. AssignMessage[policy_name]: index must be greater than zero in [attribute].[index]
Örnek hata mesajı
Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Örnek ekran görüntüsü
Neden
Mesaj Ata Politikası'nın <Copy>
ve/veya <Remove>
öğelerinde belirtilen dizin 0 veya negatif bir sayıysa API Proxy'si dağıtımı başarısız olur.
Örneğin, aynı ada sahip birden fazla sorgu parametresi iletiyorsanız Edge'de bunlara dizine eklenmiş akış değişkenleri olarak erişebilirsiniz. 3 öğrencinin kimliklerini sorgu parametresi olarak geçirmek istediğinizi varsayalım. Bunu aşağıdaki şekilde yapabilirsiniz:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Ardından, bu sorgu parametrelerine Mesaj Ata politikasında aşağıdaki şekilde 0, 1 ve 2 dizin numaralarıyla erişmeye çalıştığınızı varsayalım:
id.0
id.1 and
id.2
Bu durumda, dizinin 1 ile başlaması gerektiğinden proxy dağıtımı başarısız olur. Bu, "id=1" ilk sorgu parametresine "id.1" olarak erişebileceğiniz anlamına gelir. İkinci sorgu parametresi "id=2"ye erişmek için dizin 2'yi (yani "id.2") kullanmanız gerekir. Benzer şekilde, "id=3" üçüncü sorgu parametresine erişmek için "id.3"ü kullanabilirsiniz.
Buradan daha fazla bilgi edinebilirsiniz.
Teşhis
Hatanın oluştuğu Mesaj Atama politikasını, özelliğin adını ve geçersiz dizini belirleyin. Bu öğelerin tümünü hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı
GeneratingGeocodingRequest
, özelliğin adıid
, dizin ise0
şeklindedir:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Başarısız İleti Atama Politikası XML'inde kullanılan özellik adı ve dizinin, hata mesajında belirtilen özellik adı ve dizinle eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politikada
id
ve dizin özellikleri0
olarak belirtilir. Bu durum, hata mesajındaki metinle eşleşir:<AssignMessage name="GenerateStudentsRequest"> <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo> <Copy source="request"> <QueryParams> <QueryParam name="school_name"/> <QueryParam name="id.0"/> <QueryParam name="id.1"/> <QueryParam name="id.2"/> </QueryParams> </Copy> </AssignMessage>
Belirtilen dizin 0 veya negatif sayıysa hatanın nedeni budur.
Yukarıda gösterilen İleti Ata politikası örneğinde, dizin 0'ı kullanarak "id" sorgu parametresinin ilk değerine erişmeye çalışıyorsunuz. Bu nedenle, API Proxy'sinin dağıtımı şu hatayı vererek başarısız olur:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Çözünürlük
İleti Atama bölümünde birden çok üstbilgiye, sorgu parametresine veya aynı adı paylaşan diğer parametrelere eriştiğinizde dizinin her zaman sıfırdan büyük olduğundan emin olun. Örneğin:
<AssignMessage name="GenerateStudentsRequest">
<AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
<Copy source="request">
<QueryParams>
<QueryParam name="school_name"/>
<QueryParam name="id.1"/>
<QueryParam name="id.2"/>
<QueryParam name="id.3"/>
</QueryParams>
</Copy>
</AssignMessage>
InvalidVariableName
Hata mesajı
API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Örnek hata mesajı
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Örnek ekran görüntüsü
Neden
<Name>
alt öğesi boşsa veya <AssignVariable>
öğesinde belirtilmemişse değer atanacak geçerli bir değişken adı olmadığından API proxy'sinin dağıtımı başarısız olur. Geçerli bir değişken adı gereklidir.
Teşhis
Hatanın oluştuğu API Proxy'sinde bulunan tüm Mesaj Atama politikalarını inceleyin. <Name>
alt öğesinin boş olduğu veya <AssignVariable>
öğesinde belirtilmediği bir Mesaj Ata politikası varsa hatanın nedeni budur.
1. Örnek: Aşağıdaki Mesaj Ata politikasında tanımlı <Name>
öğesi yok.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
2. Örnek: Aşağıdaki Mesaj Ata politikasında boş bir <Name>
öğesi var.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Name></Name>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
Çözünürlük
Mesaj Ata Politikası'nın <AssignVariable>
öğesinde <Name>
alt öğesinin her zaman belirtildiğinden ve boş olmadığından emin olun. Örneğin:
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <AssignVariable> <Name>appSecret</Name> <Value>abcd1234</Value> </AssignVariable> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>