Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
UnresolvedVariable
Codice di errore
steps.assignmessage.UnresolvedVariable
Corpo della risposta di errore
{ "fault": { "faultstring": "AssignMessage[policy_name]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.assignmessage.UnresolvedVariable" } } }
Causa
Questo errore si verifica se una variabile specificata nel criterio Assegna messaggio è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguita la norma) oppure
- non possono essere risolti (non è definito)
Ad esempio, questo errore si verifica se il criterio Assegna messaggio viene eseguito nel flusso di richiesta, ma l'attributo source
nell'elemento <Copy>
è impostato sulla variabile response
o error
o su qualsiasi altra variabile personalizzata che non esiste nel flusso di richiesta.
Diagnosi
Identifica il criterio di assegnazione dei messaggi in cui si è verificato l'errore e il nome della variabile che non è disponibile. Puoi trovare entrambi questi elementi nell'elemento
faultstring
della risposta di errore.Ad esempio, nell'
faultstring
seguente, il nome del criterio ègoogleBook
e la variabile èvar
:"faultstring": "AssignMessage[googleBook]: unable to resolve variable var"
Nel file XML del criterio Assegna messaggi, verifica che il nome della variabile utilizzata corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio imposta l'attributo source nell'elemento
<Copy>
su una variabile denominatavar
, che corrisponde a quanto contenuto infaultstring
:<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>googleBook</DisplayName> <Properties /> <Copy source="var"> <Headers> <Header name="user-agent" /> </Headers> </Copy> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>
Determina se la variabile è definita e disponibile nel flusso in cui viene eseguito il criterio Assegna messaggio.
Se la variabile è:
- fuori ambito (non disponibile nel flusso specifico in cui viene eseguita la norma) oppure
- non possono essere risolti (non è definito)
questa è la causa dell'errore.
Ad esempio, supponiamo che il criterio Assegna messaggio mostrato sopra venga eseguito nel flusso di richiesta. Verifica se la variabile
var
è definita in uno dei criteri eseguiti prima del criterio di assegnazione dei messaggi nel flusso di richiesta. Se la variabile non è stata definita, verrà visualizzato il codice di errore:steps.assignmessage.UnresolvedVariable
Risoluzione
Assicurati che la variabile a cui viene fatto riferimento nel criterio esista e sia disponibile nel flusso specifico in cui è in esecuzione il criterio di Assegna messaggio.
Per correggere il criterio di esempio mostrato sopra, puoi modificare l'attributo source nell'elemento <Copy>
in modo che corrisponda alla variabile di richiesta o a qualsiasi altra variabile personalizzata di tipo messaggio esistente nel flusso di richiesta.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>googleBook</DisplayName>
<Properties />
<Copy source="request">
<Headers>
<Header name="user-agent" />
</Headers>
</Copy>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
VariableOfNonMsgType
Codice di errore
steps.assignmessage.VariableOfNonMsgType
Corpo della risposta di errore
{ "fault": { "faultstring": "AssignMessage[policy_name]: value of variable [variable] is not of type Message", "detail": { "errorcode": "steps.assignmessage.VariableOfNonMsgType" } } }
Causa
Questo errore si verifica se l'attributo source
nell'elemento <Copy>
è impostato su una variabile non di tipo message.
Le variabili del tipo di messaggio rappresentano intere richieste e risposte HTTP. Le variabili di flusso integrate request
, response
e message
sono di tipo messaggio. Per saperne di più sulle variabili messaggio, consulta l'articolo Riferimento alle variabili.
Diagnosi
Identifica il criterio di assegnazione dei messaggi in cui si è verificato l'errore e il nome della variabile il cui tipo non è corretto. Puoi trovare entrambi questi elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, nell'faultstring
seguente, il nome del criterio èGenerateGeocodingRequest
e la variabile èPostalCode
:"faultstring": "AssignMessage[GenerateGeocodingRequest]: value of variable PostalCode is not of type Message"
Nel codice XML del criterio Assegna messaggi non riuscito, verifica che il nome della variabile impostata nell'elemento
<Copy>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio imposta un attributo sorgente su una variabile denominataPostalCode
, che corrisponde a quanto contenuto infaultstring
:<AssignMessage name="GenerateGeocodingRequest"> <AssignTo createNew="true" type="request">GeocodingRequest</AssignTo> <AssignVariable> <Name>PostalCode</Name> <Ref>request.queryparam.postalcode</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> <Copy source="PostalCode"> <QueryParams> <QueryParam name="q" /> </QueryParams> </Copy> </AssignMessage>
Determina se questa variabile è di tipo messaggio o meno:
- Individua il codice all'interno del bundle proxy API, in cui la variabile è stata definita per prima.
- Una volta individuato il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
- Controlla il valore dell'attributo tipo (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo di variabile non è messaggio (ad esempio una stringa), è questa la causa dell'errore. Per conoscere le variabili comuni e i relativi tipi, consulta Riferimento variabili.
Ad esempio, osserva la variabile PostalCode nel codice XML riportato sopra. Viene assegnato il valore della variabile di flusso
request.queryparam.postalcode
nell'elemento<AssignVariable>
. Questo valore è una stringa, perché non è presente alcun attributo di tipo nell'assegnazione della variabile.Ricorda che la variabile PostalCode viene utilizzata nell'elemento
<Copy>
del criterio Assegna messaggio:<Copy source="PostalCode"> <QueryParams> <QueryParam name="PostalCode" /> </QueryParams> </Copy>
Poiché PostalCode non è di tipo messaggio (in questo esempio è una stringa), riceverai il seguente codice di errore:
steps.assignmessage.VariableOfNonMsgType
Risoluzione
Assicurati che l'attributo source
nell'elemento <Copy>
nel criterio di assegnazione dei messaggi non riuscito sia impostato su una variabile di flusso di tipo messaggio esistente.
Per correggere il criterio, puoi modificare l'attributo source
nell'elemento <Copy>
per specificare una variabile di tipo messaggio. Ad esempio, se il criterio Assegna messaggio deve essere eseguito nel flusso di richiesta, puoi utilizzare la variabile del tipo di messaggio request
o qualsiasi altra variabile personalizzata di tipo messaggio.
<AssignMessage name="GenerateGeocodingRequest">
<AssignTo createNew="true" type="request">GeocodingRequest</AssignTo>
<AssignVariable>
<Name>PostalCode</Name>
<Ref>request.queryparam.postalcode</Ref>
</AssignVariable>
<AssignVariable>
<Name>Country</Name>
<Ref>request.queryparam.country</Ref>
</AssignVariable>
<Copy source="request">
<QueryParams>
<QueryParam name="PostalCode" />
</QueryParams>
</Copy>
</AssignMessage>