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ımı şu hata mesajıyla başarısız oluyor:
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
Assign Message politikasının <Copy> ve/veya <Remove> öğelerinde belirtilen dizin 0 veya negatif bir sayıysa API proxy'sinin dağıtımı başarısız olur.
Örneğin, aynı ada sahip birden fazla sorgu parametresi iletirseniz bunlara Edge'de dizine eklenmiş akış değişkenleri olarak erişebilirsiniz. 3 öğrencinin kimliklerini sorgu parametreleri olarak iletmek istediğinizi varsayalım. Bu durumda, aşağıdaki şekilde iletebilirsiniz:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Ardından, Assign Message (Mesaj Atama) politikasında 0, 1 ve 2 dizin numaralarıyla bu sorgu parametrelerine erişmeye çalıştığınızı varsayalım:
id.0
id.1 and
id.2
Bu durumda, dizin 1 ile başlaması gerektiğinden proxy'nin dağıtımı başarısız olur. Bu durumda, "id=1" olan ilk sorgu parametresine "id.1" olarak erişebilirsiniz. İkinci sorgu parametresi olan "id=2"ye erişmek için 2 dizinini (yani "id.2") kullanmanız gerekir. Benzer şekilde, üçüncü sorgu parametresi olan "id=3"e erişmek için "id.3"ü kullanabilirsiniz.
Buradan daha fazla bilgi edinebilirsiniz.
Teşhis
Hataya neden olan Assign Message (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ıidve dizin0'dir:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0Başarısız olan Assign Message (Mesaj Atama) politikası XML'sinde kullanılan özellik adı ve dizinin, hata mesajında tanımlanan özellik adı ve dizinle (yukarıdaki 1. adım) eşleştiğini doğrulayın. Örneğin, aşağıdaki politika,
idözelliğini ve dizini0olarak belirtir. Bu, hata mesajındakiyle 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 bir sayıysa hatanın nedeni budur.
Yukarıda gösterilen Assign Message (Mesaj Atama) politikasında, 0 dizinini kullanarak "id" sorgu parametresinin ilk değerine erişmeye çalışıyorsunuz. Bu nedenle, API proxy'sinin dağıtımı şu hatayla başarısız olur:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Çözünürlük
İletiyi Ata'da, aynı adı paylaşan birden fazla üstbilgiye, sorgu parametresine veya başka parametreye 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ımı şu hata mesajıyla başarısız oluyor:
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
Alt öğe <Name> boşsa veya <AssignVariable> öğesinde belirtilmemişse API proxy'sinin dağıtımı başarısız olur. Bunun nedeni, değer atanacak geçerli bir değişken adının olmamasıdır. Geçerli bir değişken adı gereklidir.
Teşhis
Hatayı içeren API proxy'sindeki tüm Assign Message politikalarını inceleyin. <Name> alt öğesinin boş olduğu veya <AssignVariable> öğesinde belirtilmediği bir Assign Message politikası varsa hatanın nedeni budur.
1. örnek: Aşağıdaki Mesaj Atama politikasında <Name> öğesi tanımlanmamış.
<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 İletiyi 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
Assign Message (Mesaj Atama) politikasının <AssignVariable> öğesinde alt öğe <Name>'nın 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>