Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
InvalidIndex
Komunikat o błędzie
Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:
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]
Przykładowy komunikat o błędzie
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
Przykładowy zrzut ekranu

Przyczyna
Jeśli indeks określony w elementach <Copy> lub <Remove> zasady Assign Message ma wartość 0 lub liczbę ujemną, wdrożenie serwera proxy interfejsu API nie powiedzie się.
Jeśli na przykład przekażesz wiele parametrów zapytania o tej samej nazwie, możesz uzyskać do nich dostęp w Edge jako do zmiennych przepływu indeksowanych. Załóżmy, że chcesz przekazać identyfikatory 3 uczniów jako parametry zapytania. Możesz to zrobić w ten sposób:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Załóżmy, że próbujesz uzyskać dostęp do tych parametrów zapytania za pomocą numerów indeksów 0, 1 i 2 w zasadach przypisywania wiadomości w ten sposób:
id.0
id.1 and
id.2
W tym przypadku wdrożenie serwera proxy nie powiedzie się, ponieważ indeks musi zaczynać się od 1. Oznacza to, że możesz uzyskać dostęp do pierwszego parametru zapytania „id=1” jako „id.1”. Aby uzyskać dostęp do drugiego parametru zapytania „id=2”, musisz użyć indeksu 2, czyli „id.2”. Podobnie, aby uzyskać dostęp do trzeciego parametru zapytania „id=3”, możesz użyć „id.3”.
Więcej informacji znajdziesz tutaj.
Diagnostyka
Określ zasadę przypisywania wiadomości, w której wystąpił błąd, nazwę atrybutu i nieprawidłowy indeks. Wszystkie te elementy znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to
GeneratingGeocodingRequest, nazwa atrybutu toid, a indeks to0:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0Sprawdź, czy nazwa atrybutu i indeks użyte w pliku XML nieudanej zasady przypisywania wiadomości są zgodne z nazwą atrybutu i indeksem zidentyfikowanymi w komunikacie o błędzie (krok 1 powyżej). Na przykład te zasady określają atrybut
idi indeks jako0, co odpowiada temu, co znajduje się w komunikacie o błędzie:<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>
Jeśli podany indeks to 0 lub liczba ujemna, to jest to przyczyna błędu.
W przykładzie zasady Assign Message pokazanym powyżej próbujesz uzyskać dostęp do pierwszej wartości parametru zapytania „id” za pomocą indeksu 0. Wdrożenie proxy interfejsu API nie powiodło się z powodu błędu:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Rozdzielczość
W przypadku przypisywania wiadomości, gdy uzyskujesz dostęp do wielu nagłówków, parametrów zapytania lub innych parametrów o tej samej nazwie, upewnij się, że indeks jest zawsze większy od zera. Na przykład:
<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
Komunikat o błędzie
Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla ten komunikat o błędzie:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Przykładowy komunikat o błędzie
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Przykładowy zrzut ekranu

Przyczyna
Jeśli element podrzędny <Name> jest pusty lub nie został określony w elemencie <AssignVariable>, wdrożenie serwera proxy interfejsu API nie powiedzie się, ponieważ nie ma prawidłowej nazwy zmiennej, do której można przypisać wartość. Wymagana jest prawidłowa nazwa zmiennej.
Diagnostyka
Sprawdź wszystkie zasady przypisywania wiadomości w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli w zasadach przypisywania wiadomości element podrzędny <Name> jest pusty lub nie został określony w elemencie <AssignVariable>, to jest to przyczyną błędu.
Przykład 1. W zasadach przypisywania wiadomości nie zdefiniowano elementu <Name>.
<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>
Przykład 2. Ta zasada Assign Message zawiera pusty element <Name>.
<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>
Rozdzielczość
Upewnij się, że element podrzędny <Name> jest zawsze określony i nie jest pusty w elemencie <AssignVariable> zasady Assign Message. Na przykład:
<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>