عیب‌یابی خطای استقرار خط‌مشی پیام «اختصاص دادن»

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

InvalidIndex

پیام خطا

استقرار پراکسی API ازطریق «واسط کاربر Edge» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با این پیام خطا ناموفق است:

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]

مثال پیام خطا

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

نماگرفت نمونه

علت

اگر شاخص مشخص‌شده در عناصر <Copy> و/یا <Remove> خط‌مشی «تخصیص پیام» ۰ یا عددی منفی باشد، استقرار «پراکسی API» ناموفق خواهد بود.

برای مثال، اگر چندین پارامتر پُرسمان با نام یکسان ارسال کنید، می‌توانید به آن‌ها در Edge به‌عنوان متغیرهای جریان فهرست‌بندی‌شده دسترسی داشته باشید. فرض کنیم می‌خواهید شناسه‌های ۳ محصل را به‌عنوان پارامترهای پُرسمان ارسال کنید، می‌توانید این کار را به این صورت انجام دهید:

https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3

سپس، فرض کنیم که شما تلاش می‌کنید با شماره‌های شاخص ۰، ۱، و ۲ در خط‌مشی «اختصاص پیام» به این پارامترهای پُرسمان به‌صورت زیر دسترسی پیدا کنید:

id.0
id.1 and
id.2

در این مورد، استقرار پراکسی ناموفق است زیرا نمایه باید با ۱ شروع شود. این یعنی می‌توانید به اولین پارامتر پُرسمان «id=1» به‌عنوان «id.1» دسترسی داشته باشید. برای دسترسی به پارامتر پُرسمان دوم «id=2»، باید از نمایه ۲ یعنی «id.2» استفاده کنید. به‌همین ترتیب، برای دسترسی به پارامتر پُرسمان سوم «id=3»، می‌توانید از «id.3» استفاده کنید.

در اینجا می‌توانید اطلاعات بیشتری کسب کنید.

تشخیص

  1. خط‌مشی «اختصاص پیام» را که خطا در آن رخ داده است، نام مشخصه، و نمایه نامعتبر را شناسایی کنید. می‌توانید همه این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی GeneratingGeocodingRequest، نام مشخصه id، و شاخص 0 است:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    
  2. تأیید کنید که نام مشخصه و نمایه‌ استفاده‌شده در «خط‌مشی تخصیص پیام» ناموفق با نام مشخصه و نمایه‌ شناسایی‌شده در پیام خطا مطابقت داشته باشد (مرحله ۱ در بالا). برای مثال، خط‌مشی زیر مشخصه id و نمایه‌اش را به‌عنوان 0 مشخص می‌کند که با آنچه در پیام خطا آمده است مطابقت دارد:

    <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>
  3. اگر نمایه مشخص‌شده ۰ یا عدد منفی باشد، دلیل خطا همین است.

    در خط‌مشی «تخصیص پیام» نشان‌داده‌شده در بالا، بااستفاده از نمایه ۰ سعی می‌کنید به اولین مقدار پارامتر پُرسمان «id» دسترسی پیدا کنید. بنابراین، استقرار «پراکسی API» با این خطا ناموفق است:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    

وضوح

در «تخصیص پیام»، وقتی به چندین سرایند، پارامتر پُرسمان، یا پارامترهای دیگری که نام یکسانی دارند دسترسی پیدا می‌کنید، مطمئن شوید که شاخص همیشه بزرگ‌تر از صفر باشد. برای مثال:

<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

پیام خطا

استقرار پراکسی API ازطریق «واسط کاربر Edge» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با این پیام خطا ناموفق است:

Error Saving Revision [revision_number]
The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.

مثال پیام خطا

Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.

نماگرفت نمونه

علت

اگر عنصر فرزند <Name> خالی باشد یا در عنصر <AssignVariable> مشخص نشده باشد، استقرار پراکسی API ناموفق خواهد بود زیرا نام متغیر معتبری وجود ندارد که مقدار به آن اختصاص داده شود. نام متغیر معتبری لازم است.

تشخیص

همه خط‌مشی‌های «تخصیص پیام» را در «پراکسی API» خاصی که در آن خرابی رخ داده است بررسی کنید. اگر خط‌مشی «اختصاص پیام» وجود داشته باشد که در آن عنصر فرزند <Name> خالی باشد یا در عنصر <AssignVariable> مشخص نشده باشد، این دلیل خطا است.

مثال ۱: خط‌مشی «تخصیص پیام» زیر عنصر <Name> تعریف‌شده ندارد.

<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>

مثال ۲: خط‌مشی «تخصیص پیام» زیر عنصر <Name> خالی دارد .

<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>

وضوح

مطمئن شوید که عنصر فرزند <Name> همیشه در عنصر <AssignVariable> خط‌مشی «تخصیص پیام» مشخص شده باشد و خالی نباشد. برای مثال:

<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>