มอบหมายการแก้ปัญหาข้อผิดพลาดในการทำให้นโยบายข้อความใช้งานได้

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

InvalidIndex

ข้อความแสดงข้อผิดพลาด

การติดตั้งใช้งานพร็อกซี API ผ่าน UI ของ Edge หรือ 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 ในนโยบายกำหนดข้อความดังนี้

id.0
id.1 and
id.2

ในกรณีนี้ การติดตั้งใช้งานพร็อกซีจะล้มเหลวเนื่องจากดัชนีต้องเริ่มต้นด้วย 1 ซึ่งหมายความว่าคุณสามารถเข้าถึงพารามิเตอร์การค้นหาแรก "id=1" เป็น "id.1" ได้ หากต้องการเข้าถึงพารามิเตอร์การค้นหาที่ 2 "id=2" คุณต้องใช้ดัชนี 2 เช่น "id.2" ในทำนองเดียวกัน หากต้องการเข้าถึงพารามิเตอร์การค้นหาที่ 3 "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 ดังนั้น การติดตั้งใช้งานพร็อกซี API จึงล้มเหลวโดยมีข้อผิดพลาดดังนี้

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

ความละเอียด

ในส่วน "กำหนดข้อความ" เมื่อเข้าถึงส่วนหัว พารามิเตอร์การค้นหา หรือพารามิเตอร์อื่นๆ หลายรายการที่มีชื่อเดียวกัน ให้ตรวจสอบว่าดัชนีมีค่ามากกว่า 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 ผ่าน UI ของ Edge หรือ 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 ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด หากมีนโยบายกำหนดข้อความที่องค์ประกอบย่อย <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: นโยบายกำหนดข้อความต่อไปนี้มีองค์ประกอบ <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>