شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
InvalidIndex
پیغام خطا
استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:
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>
خط مشی Assign Message 0 یا یک عدد منفی باشد، در آن صورت استقرار API Proxy ناموفق است.
به عنوان مثال، اگر چندین پارامتر پرس و جو را با یک نام ارسال کنید، می توانید به آنها در Edge به عنوان متغیرهای جریان فهرست شده دسترسی داشته باشید. فرض کنید میخواهید شناسههای 3 دانشآموز را به عنوان پارامترهای پرس و جو ارسال کنید، سپس میتوانید این کار را به صورت زیر انجام دهید:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
سپس، فرض کنید سعی می کنید به این پارامترهای پرس و جو با شماره های شاخص 0، 1 و 2 در خط مشی Assign Message به شرح زیر دسترسی داشته باشید:
id.0
id.1 and
id.2
در این حالت، استقرار پراکسی با شکست مواجه میشود، زیرا شاخص باید با 1 شروع شود. این بدان معناست که شما میتوانید به اولین پارامتر کوئری "id=1" به عنوان "id.1" دسترسی داشته باشید. برای دسترسی به پارامتر دوم پرس و جو "id=2"، باید از شاخص 2 یعنی "id.2" استفاده کنید. به طور مشابه، برای دسترسی به سومین پارامتر کوئری "id=3"، می توانید از "id.3" استفاده کنید.
اطلاعات بیشتر را می توانید در اینجا بیابید.
تشخیص
خط مشی Assign Message را که در آن خطا رخ داده است، نام ویژگی و نمایه نامعتبر را مشخص کنید. شما می توانید تمام این موارد را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام سیاست
GeneratingGeocodingRequest
، نام ویژگیid
و شاخص0
است:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
بررسی کنید که نام مشخصه و نمایه استفاده شده در خط مشی Assign Message XML ناموفق با نام ویژگی و شاخص شناسایی شده در پیام خطا مطابقت داشته باشد (مرحله شماره 1 در بالا). به عنوان مثال، خط مشی زیر
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>
اگر شاخص مشخص شده 0 یا عدد منفی باشد، این دلیل خطا است.
در مثال Assign Message Policy نشان داده شده در بالا، شما سعی می کنید با استفاده از شاخص 0 به اولین مقدار پارامتر query "id" دسترسی پیدا کنید. بنابراین استقرار API Proxy با خطا انجام نمی شود:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
قطعنامه
در Assign Message، وقتی به چندین سرصفحه، پارامترهای پرس و جو یا سایر پارامترهایی که یک نام مشترک دارند دسترسی دارید، اطمینان حاصل کنید که شاخص همیشه بزرگتر از صفر است. به عنوان مثال:
<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 UI یا Edge management API با این پیام خطا انجام نمی شود:
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 با شکست مواجه می شود زیرا نام متغیر معتبری وجود ندارد که بتوان مقداری به آن اختصاص داد. یک نام متغیر معتبر مورد نیاز است.
تشخیص
همه خطمشیهای Assign Message را در پروکسی API خاصی که در آن خرابی رخ داده است، بررسی کنید. اگر خط مشی Assign Message وجود داشته باشد که در آن عنصر فرزند <Name>
خالی باشد یا در عنصر <AssignVariable>
مشخص نشده باشد، دلیل این خطا است.
مثال 1: خط مشی Assign Message زیر هیچ عنصر <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>
مثال 2: خط مشی Assign Message زیر دارای یک عنصر <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>
خط مشی Assign Message مشخص و خالی نباشد. به عنوان مثال:
<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>