Stai visualizzando la documentazione di Apigee Edge.
  Vai alla sezione
     Documentazione di Apigee X. Informazioni
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 eseguito il criterio) o
- non può essere risolto (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 oppure 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 gli elementi nell'elemento - faultstringdella risposta di errore.- Ad esempio, nel seguente - faultstring, il nome del criterio è- googleBooke la variabile è- var:- "faultstring": "AssignMessage[googleBook]: unable to resolve variable var"
- Nel codice XML dell'assegnazione dei criteri dei messaggi non riuscito, 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 consente di impostare l'attributo di origine nell'elemento - <Copy>su una variabile denominata- var, che corrisponde a quanto contenuto in- faultstring:- <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) o
- non può essere risolto (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 Assegna messaggio nel flusso di richiesta. Se la variabile non è stata definita, viene 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 viene eseguito il criterio Assegna messaggio.
Per correggere la norma di esempio mostrata 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 che non è di tipo message.
Le variabili del tipo di messaggio rappresentano intere richieste e risposte HTTP. Le variabili di flusso perimetrale integrate request, response e message sono di tipo "messaggio". Per saperne di più sulle variabili dei messaggi, consulta Riferimento sulle variabili.
Diagnosi
- Identifica il criterio Assegna messaggi in cui si è verificato l'errore e il nome della variabile il cui tipo non è corretto. Puoi trovare entrambi gli elementi nell'elemento - faultstringdella risposta di errore. Ad esempio, nel seguente- faultstring, il nome del criterio è- GenerateGeocodingRequeste la variabile è- PostalCode:- "faultstring": "AssignMessage[GenerateGeocodingRequest]: value of variable PostalCode is not of type Message"
- Nel codice XML dell'assegnazione dei criteri dei messaggi con errore, 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 consente di impostare un attributo di origine su una variabile denominata- PostalCode, che corrisponde a quanto contenuto in- faultstring:- <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, dove è stata definita prima la variabile.
- Una volta stabilito il criterio in cui la variabile viene definita e compilata per primo, devi stabilire il tipo di variabile come segue:
- Controlla il valore dell'attributo type (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), ciò è la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta il Riferimento sulle variabili.
 - Ad esempio, osserva la variabile PostalCode nel codice XML sopra. Viene assegnato il valore della variabile di flusso - request.queryparam.postalcodenell'elemento- <AssignVariable>. Questo valore è una stringa, perché non è presente alcun attributo di tipo nell'assegnazione della variabile.- A questo punto, 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 (è una stringa in questo esempio), viene visualizzato il codice di errore: - steps.assignmessage.VariableOfNonMsgType
Risoluzione
Assicurati che l'attributo source nell'elemento <Copy> del criterio di assegnazione del messaggio non riuscito sia impostato su una variabile di flusso di tipo message 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 della 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>