تحديد المشاكل وحلّها في ما يتعلّق بنشر سياسة الرسائل

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

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 كمتغيّرات تدفق مفهرسة. لنفترض أنّك تريد تمرير أرقام تعريف 3 طلاب كمَعلمات طلب بحث، يمكنك إجراء ذلك على النحو التالي:

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

مزيد من المعلومات

التشخيص

  1. حدِّد سياسة "تعيين الرسالة" التي حدث فيها الخطأ، واسم السمة، والفهرس غير الصالح. يمكنك العثور على كل هذه العناصر في رسالة الخطأ. على سبيل المثال، في الخطأ التالي، اسم السياسة هو GeneratingGeocodingRequest، واسم السمة هو id، والفهرس هو 0:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    
  2. تأكَّد من أنّ اسم السمة والفهرس المستخدَمَين في ملف 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>
  3. إذا كان الفهرس المحدّد هو 0 أو رقمًا سالبًا، سيكون ذلك هو سبب الخطأ.

    في مثال سياسة "تعيين الرسالة" الموضّح أعلاه، تحاول الوصول إلى القيمة الأولى لمَعلمة طلب البحث "id" باستخدام الفهرس 0. وبالتالي، يتعذّر نشر خادم وكيل لواجهة برمجة التطبيقات بسبب الخطأ:

    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

رسالة الخطأ

يتعذّر نشر خادم وكيل لواجهة برمجة التطبيقات من خلال واجهة مستخدم 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>، سيتعذّر نشر خادم وكيل واجهة برمجة التطبيقات لأنّه لا يوجد اسم متغيّر صالح يمكن تعيين قيمة له. يجب إدخال اسم صالح للمتغيّر.

التشخيص

افحص جميع سياسات "تعيين الرسالة" في خادم وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه الخطأ. إذا كانت هناك أي سياسة Assign Message يكون فيها العنصر الفرعي <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>