أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
InvalidIndex
رسالة الخطأ
تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات من خلال واجهة مستخدم 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>
من السياسة "تعيين رسالة" بالقيمة 0 أو رقمًا سالبًا، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات.
على سبيل المثال، إذا مررت مَعلمات طلب بحث متعددة بالاسم نفسه، يمكنك الوصول إليها في Edge كمتغيّرات تدفق مفهرَسة. لنفترض أنك تريد تمرير معرّفات ثلاثة طلاب كمعلمات طلب بحث، يمكنك إجراء ذلك على النحو التالي:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
بعد ذلك، لنفترض أنك تحاول الوصول إلى معلمات طلب البحث هذه باستخدام أرقام الفهرس 0 و1 و2 في سياسة "تعيين رسالة" على النحو التالي:
id.0
id.1 and
id.2
في هذه الحالة، يخفق نشر الخادم الوكيل لأن الفهرس يجب أن يبدأ بالرقم 1. وهذا يعني أنّه يمكنك الوصول إلى معلَمة طلب البحث الأولى "id=1" كـ "id.1". للوصول إلى مَعلمة طلب البحث الثانية "id=2"، عليك استخدام الفهرس 2، أي "id.2". وبالمثل، للوصول إلى مَعلمة طلب البحث الثالثة "id=3"، يمكنك استخدام "id.3".
ويمكنك العثور على المزيد من المعلومات هنا.
التشخيص
حدِّد سياسة "تعيين الرسائل" حيث حدث الخطأ واسم السمة والفهرس غير الصالح. ويمكنك العثور على جميع هذه العناصر في رسالة الخطأ. على سبيل المثال، في الخطأ التالي، اسم السياسة هو
GeneratingGeocodingRequest
، واسم السمة هوid
، والفهرس هو0
:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
تحقَّق من تطابق اسم السمة والفهرس المستخدَم في ملف 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 أو رقم سالب، فإن هذا هو سبب الخطأ.
في مثال سياسة "تعيين الرسائل" الموضحة أعلاه، تحاول الوصول إلى القيمة الأولى لمعلمة طلب البحث "id" باستخدام الفهرس 0. وبالتالي، فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور الخطأ:
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
رسالة الخطأ
تعذَّر نشر الخادم الوكيل لواجهة برمجة التطبيقات من خلال واجهة مستخدم 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>
، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات بسبب عدم توفّر اسم متغيّر صالح يجب تخصيص قيمة له. يجب إدخال اسم متغيّر صالح.
التشخيص
افحص جميع سياسات "تعيين الرسائل" في خادم وكيل واجهة برمجة التطبيقات المحدّد حيث حدث الفشل. إذا كان هناك سياسة "تعيين رسالة" يكون فيها العنصر الفرعي <Name>
فارغًا أو لم يتم تحديده في العنصر <AssignVariable>
، يكون هذا هو سبب الخطأ.
المثال 1: لم يتم تحديد عنصر <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: تحتوي سياسة "تعيين الرسائل" التالية على عنصر <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>