Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
InvalidIndex
Messaggio di errore
Il deployment del proxy API tramite l'UI o l'API di gestione perimetrale non riesce e genera questo messaggio di errore:
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]
Esempio di messaggio di errore
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
Screenshot di esempio
Causa
Se l'indice specificato negli elementi <Copy>
e/o <Remove>
del criterio Assegna messaggio è 0 o è un numero negativo, il deployment del proxy API non va a buon fine.
Ad esempio, se passi più parametri di query con lo stesso nome, puoi accedervi in Edge come variabili di flusso indicizzate. Supponiamo che tu voglia passare gli ID di tre studenti come parametri di query, dopodiché puoi procedere come segue:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Quindi, supponiamo che tu provi ad accedere a questi parametri di query con i numeri di indice 0, 1 e 2 nel criterio Assegna messaggio, come indicato di seguito:
id.0
id.1 and
id.2
In questo caso, il deployment del proxy non riesce perché l'indice deve iniziare con 1. Ciò significa che puoi accedere al primo parametro di query "id=1" come "id.1". Per accedere al secondo parametro di query "id=2", devi utilizzare l'indice 2, ovvero "id.2". Analogamente, per accedere al terzo parametro di query "id=3", puoi utilizzare "id.3".
Puoi trovare ulteriori informazioni qui.
Diagnostica
Identifica il criterio di assegnazione dei messaggi in cui si è verificato l'errore, il nome dell'attributo e l'indice non valido. Puoi trovare tutte queste voci nel messaggio di errore. Ad esempio, nel seguente errore, il nome del criterio è
GeneratingGeocodingRequest
, il nome dell'attributo èid
e l'indice è0
:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Verifica che il nome dell'attributo e l'indice utilizzato nel file XML del criterio di assegnazione del messaggio non riuscito corrispondano al nome dell'attributo e all'indice identificato nel messaggio di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio specifica l'attributo
id
e l'indice come0
, che corrisponde al contenuto del messaggio di errore:<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>
Se l'indice specificato è 0 o un numero negativo, è questa la causa dell'errore.
Nell'esempio Assegna messaggio di cui sopra, stai tentando di accedere al primo valore del parametro di ricerca "id" utilizzando l'indice 0. Di conseguenza, il deployment del proxy API non riesce e restituisce l'errore:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Risoluzione
In Assegna messaggio, quando accedi a più intestazioni, parametri di query o altri parametri che condividono lo stesso nome, assicurati che l'indice sia sempre maggiore di zero. Ad esempio:
<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
Messaggio di errore
Il deployment del proxy API tramite l'UI o l'API di gestione perimetrale non riesce e genera questo messaggio di errore:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Esempio di messaggio di errore
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Screenshot di esempio
Causa
Se l'elemento secondario <Name>
è vuoto o non è specificato nell'elemento <AssignVariable>
, il deployment del proxy API non riesce perché non esiste un nome di variabile valido a cui assegnare un valore. È richiesto un nome di variabile valido.
Diagnostica
Esamina tutti i criteri di assegnazione dei messaggi nello specifico proxy API in cui si è verificato l'errore. Se esiste un criterio Assegna messaggio in cui l'elemento secondario <Name>
è vuoto o non specificato nell'elemento <AssignVariable>
, è questa la causa dell'errore.
Esempio 1: il seguente criterio Assegna messaggio non ha alcun elemento <Name>
definito.
<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>
Esempio 2: il seguente criterio Assegna messaggio ha un elemento <Name>
vuoto .
<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>
Risoluzione
Assicurati che l'elemento secondario <Name>
sia sempre specificato e non vuoto all'interno dell'elemento <AssignVariable>
del criterio Assegna messaggio. Ad esempio:
<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>