Apigee 및 Apigee Hybrid 문서입니다.
    Apigee Edge 문서 보기
  
UnresolvedVariable
오류 코드
steps.assignmessage.UnresolvedVariable
오류 응답 본문
{ "fault": { "faultstring": "AssignMessage[policy_name]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.assignmessage.UnresolvedVariable" } } }
원인
이 오류는 Assign Message 정책에 지정된 변수가 다음 중 하나인 경우에 발생합니다.
- 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
예를 들어 Assign Message 정책이 요청 흐름에서 실행되지만 <Copy> 요소의 source 속성이 response 또는 error 변수 또는 요청 흐름에 존재하지 않는 다른 커스텀 변수로 설정된 경우 이 오류가 발생합니다.
진단
- 오류가 발생한 Assign Message 정책 및 사용할 수 없는 변수의 이름을 확인합니다. 두 항목은 모두 오류 응답의 - faultstring요소에서 찾을 수 있습니다.- 예를 들어 다음 - faultstring에서 정책 이름은- googleBook이고 변수는- var입니다.- "faultstring": "AssignMessage[googleBook]: unable to resolve variable var"
- 실패한 Assign Message 정책 XML에서 사용된 변수 이름이 위 1단계의 오류 문자열에서 식별된 변수 이름과 일치하는지 확인합니다. 예를 들어 다음 정책은 - <Copy>요소의 소스 속성을- faultstring에 있는 내용과 일치하는- var라는 변수로 설정합니다.- <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>
- 변수가 Assign Message 정책이 실행되는 흐름에서 정의되고 사용 가능한지 확인합니다. 
- 변수가 다음 중 하나인 경우 - 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
 - 이는 오류의 원인이 됩니다. - 예를 들어 위에 표시된 Assign Message 정책이 요청 흐름에서 실행된다고 가정해 보겠습니다. 요청 흐름의 Assign Message 정책 이전에 실행된 정책에 - var변수가 정의되어 있는지 확인합니다. 변수가 정의되지 않은 경우 다음과 같은 오류 코드가 표시됩니다.- steps.assignmessage.UnresolvedVariable
해결 방법
정책에서 참조하는 변수가 존재하고 Assign Message 정책이 실행되는 특정 흐름에서 사용할 수 있는지 확인합니다.
위의 예시 정책을 수정하려면 <Copy> 요소의 소스 속성을 요청 변수로 수정하거나 요청 흐름에 있는 다른 메시지 유형의 커스텀 변수로 수정하면 됩니다.
<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
오류 코드
steps.assignmessage.VariableOfNonMsgType
오류 응답 본문
{ "fault": { "faultstring": "AssignMessage[policy_name]: value of variable [variable] is not of type Message", "detail": { "errorcode": "steps.assignmessage.VariableOfNonMsgType" } } }
원인
이 오류는 <Copy> 요소의 source 속성이 메시지 유형이 아닌 변수로 설정된 경우에 발생합니다.
메시지 유형 변수는 전체 HTTP 요청 및 응답을 나타냅니다. 기본 제공 흐름 변수 request, response, message는 메시지 유형입니다. message 변수에 대한 자세한 내용은 변수 참조를 확인하세요.
진단
- 오류가 발생한 Assign Message 정책 및 유형이 잘못된 변수 이름을 식별합니다. 두 항목은 모두 오류 응답의 - faultstring요소에서 찾을 수 있습니다. 예를 들어 다음- faultstring에서 정책 이름은- GenerateGeocodingRequest이고 변수는- PostalCode입니다.- "faultstring": "AssignMessage[GenerateGeocodingRequest]: value of variable PostalCode is not of type Message"
- 실패한 Assign Message 정책 XML에서 - <Copy>요소에 설정된 변수 이름이 위의 1단계의 오류 문자열에서 식별된 변수 이름과 일치하는지 확인합니다. 예를 들어 다음 정책은 소스 속성을- faultstring의 내용과 일치하는- PostalCode라는 변수로 설정합니다.- <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>
- 이 변수의 유형이 메시지인지 확인합니다. - 변수가 먼저 정의된 API 프록시 번들 내에서 코드를 찾습니다.
- 정책에서 변수가 먼저 정의되고 채워지는 것을 확인한 다음에는 다음과 같이 해당 변수의 유형을 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
 
- 변수 유형이 메시지가 아닌 경우(예: 문자열) 이는 오류의 원인이 됩니다. 일반적인 변수 및 유형에 대해서 알아보려면 변수 참조를 확인하세요.
 - 예를 들어 위의 XML에서 PostalCode 변수를 살펴봅니다. - <AssignVariable>요소의 흐름 변수- request.queryparam.postalcode값이 할당됩니다. 변수 할당에 유형 속성이 없기 때문에 이 값은 문자열입니다.- 이제 Assign Message 정책의 - <Copy>요소에 PostalCode 변수가 사용됩니다.- <Copy source="PostalCode"> <QueryParams> <QueryParam name="PostalCode" /> </QueryParams> </Copy>- PostalCode는 메시지 유형이 아니므로(이 예시에서는 문자열) 다음과 같은 오류 코드를 받게 됩니다. - steps.assignmessage.VariableOfNonMsgType
해결 방법
실패한 Assign Message 정책의 <Copy> 요소에 있는 source 속성이 존재하는 메시지 유형 흐름 변수로 설정되어 있는지 확인합니다.
정책을 수정하려면 <Copy> 요소에서 source 속성을 수정하여 메시지 유형의 변수를 지정하면 됩니다. 예를 들어 요청 흐름에서 Assign Message 정책을 실행해야 하는 경우 메시지 유형 변수 request 또는 메시지 유형의 다른 커스텀 변수를 사용할 수 있습니다.
<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>