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