Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
UnresolvedVariable
Codice di errore
steps.assignmessage.UnresolvedVariable
Corpo della risposta all'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 eseguito il criterio) oppure
- non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se il criterio Assegna messaggio viene eseguito nel flusso della richiesta, ma l'attributo source
nell'elemento <Copy>
è impostato sulla variabile response
o error
o su qualsiasi altra variabile personalizzata non esistente nel flusso della richiesta.
Diagnostica
Identifica la norma Assegna messaggio in cui si è verificato l'errore e il nome della variabile che non è disponibile. Puoi trovare entrambi gli elementi nell'elemento
faultstring
della risposta di errore.Ad esempio, nel seguente
faultstring
, il nome del criterio ègoogleBook
e la variabile èvar
:"faultstring": "AssignMessage[googleBook]: unable to resolve variable var"
Nel file XML del tipo Assegna messaggio criterio, verifica che il nome della variabile utilizzata corrisponda a quello identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio imposta l'attributo source nell'elemento
<Copy>
su una variabile denominatavar
, che corrisponde al contenutofaultstring
:<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 eseguito il criterio) oppure
- non può essere risolto (non è definito)
è questa la causa dell'errore.
Supponiamo, ad esempio, 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 Assegna messaggio nel flusso di richiesta. Se la variabile non è stata definita, verrà visualizzato il seguente 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 viene eseguito il criterio Assegna messaggio.
Per correggere il criterio di esempio mostrato sopra, puoi modificare l'attributo source nell'elemento <Copy>
in modo che diventi la variabile di richiesta o qualsiasi altra variabile personalizzata di tipo messaggio esistente nel flusso della 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 all'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 Edge integrate request
, response
e message
sono di tipo messaggio. Per scoprire di più sulle variabili messaggio, consulta la documentazione di riferimento sulle variabili.
Diagnostica
Identifica il criterio Assegna messaggio in cui si è verificato l'errore e il nome della variabile di tipo errato. Puoi trovare entrambi gli elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èGenerateGeocodingRequest
e la variabile èPostalCode
:"faultstring": "AssignMessage[GenerateGeocodingRequest]: value of variable PostalCode is not of type Message"
Nel file XML del tipo Assegna messaggio criterio, verifica che il nome della variabile impostata nell'elemento
<Copy>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra). Ad esempio, il seguente criterio imposta un attributo di origine 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 compreso il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
- Verifica 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 è un messaggio (ad esempio una stringa), questo è il motivo dell'errore. Per saperne di più sulle variabili comuni e sui loro tipi, consulta Riferimento variabili.
Ad esempio, osserva la variabile PostalCode nel codice XML riportato sopra. Gli 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 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>