การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบายการดำเนินการของคีย์-ค่าคีย์

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

InvalidIndex

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

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

Error Saving Revision revision_number
Invalid index index in KeyValueMapStepDefinition policy_name.

ตัวอย่างข้อความแสดงข้อผิดพลาด

Error Saving Revision 2
Invalid index 0 in KeyValueMapStepDefinition GetKVM.

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

หากแอตทริบิวต์ index ที่ระบุในองค์ประกอบ <Get> ของนโยบายการดำเนินการแมปค่าคีย์เป็น 0 หรือเป็นจำนวนลบ การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว ดัชนีเริ่มตั้งแต่ 1 ดังนั้นดัชนีที่มีจำนวนเต็มเป็น 0 หรือติดลบ

ตัวอย่างเช่น หาก index ที่ระบุคือ 0 ในองค์ประกอบ <Get> ของนโยบายการดำเนินการแมปค่าคีย์ การทำให้พร็อกซี API ใช้งานได้ก็จะล้มเหลว

การวินิจฉัย

  1. ระบุนโยบายการดำเนินการแมปค่าคีย์ที่เกิดข้อผิดพลาดและดัชนีที่ไม่ถูกต้อง คุณดูข้อมูลนี้ได้จากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ GetKVM และดัชนีที่ไม่ถูกต้องคือ 0

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.

  2. ยืนยันว่าค่าของดัชนีที่ระบุในองค์ประกอบ <Get> ของนโยบายการดำเนินการแมปค่าคีย์ที่ล้มเหลวตรงกับค่าที่ระบุในข้อความแสดงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ตัวอย่างเช่น นโยบายต่อไปนี้ระบุค่าของดัชนีเป็น 0 ซึ่งตรงกับสิ่งที่อยู่ในข้อความแสดงข้อผิดพลาด

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
        <DisplayName>GetKVM</DisplayName>
        <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
        <Scope>environment</Scope>
        <Get assignTo="foo_variable" index="0">
            <Key>
                <Parameter>FooKey_1</Parameter>
            </Key>
        </Get>
    </KeyValueMapOperations>
    
  3. หากดัชนีที่ระบุเป็นจำนวนเต็มเป็น 0 หรือติดลบ นั่นเป็นสาเหตุของข้อผิดพลาด

    ในตัวอย่างนโยบายการดำเนินการแมปค่าคีย์ที่แสดงด้านบน ค่าของดัชนีคือ 0 ซึ่งไม่ถูกต้อง ดังนั้นการทำให้พร็อกซี API ใช้งานได้จึงล้มเหลวโดยมีข้อผิดพลาดดังนี้

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.
    

ความละเอียด

ตรวจสอบว่าแอตทริบิวต์ดัชนีที่ระบุในองค์ประกอบ <Get> ของนโยบายการดำเนินการแมปค่าคีย์ถูกต้อง (ไม่ใช่ 0 หรือจำนวนเต็มลบ)

หากต้องการแก้ไขตัวอย่างนโยบายการดำเนินการแมปค่าคีย์ที่แสดงด้านบน ให้แก้ไขดัชนีเป็น 1

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
    <DisplayName>GetKVM</DisplayName>
    <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
    <Scope>environment</Scope>
    <Get assignTo="foo_variable" index="1">
        <Key>
            <Parameter>FooKey_1</Parameter>
        </Key>
    </Get>
</KeyValueMapOperations>

KeyIsMissing

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

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml
Reason: - Non null value expected for element Parameter in Entry.

ตัวอย่างข้อความแสดงข้อผิดพลาด

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Key> หายไปเลยหรือ<Parameter> ไม่มีองค์ประกอบภายในองค์ประกอบ <Key> ภายใต้ <Entry> ของ <InitialEntries> ของนโยบายการดำเนินการแมปค่าคีย์

การวินิจฉัย

  1. ระบุนโยบายการดำเนินการแมปค่าคีย์ที่เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้จากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อของนโยบายการดำเนินการของการจับคู่ค่าคีย์คือ GetKVM

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry
    
  2. ในนโยบายการดำเนินการแมปค่าคีย์ที่ล้มเหลว ให้ตรวจสอบว่ามี <Entry> หรือไม่ ซึ่งมีองค์ประกอบ <Key> หรือ <Parameter> ที่ขาดหายไปภายใต้ <InitialEntries>

    นี่คือตัวอย่างนโยบายการดำเนินการแมปค่าคีย์ที่ไม่มี <Parameter> ภายในเอลิเมนต์ <Key>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
        <DisplayName>GetKVM</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key/>
                <Value>v1</Value>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
    

    ในกรณีนี้ องค์ประกอบแรกทำให้เกิดปัญหา

ความละเอียด

ตรวจสอบว่าองค์ประกอบ <Entry> ทั้งหมดภายใต้องค์ประกอบ <InitialEntries> ในนโยบายการดำเนินการแมปค่าคีย์มีองค์ประกอบ <Key> ตามด้วยองค์ประกอบ <Parameter>

หากต้องการแก้ไขตัวอย่างนโยบายการดำเนินการของการจับคู่ค่าคีย์ที่แสดงด้านบน การเพิ่มองค์ประกอบ <Parameter> จะช่วยแก้ปัญหาได้ดังนี้

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
    <DisplayName>GetKVM</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...

ValueIsMissing

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

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml. Reason: - Non null value expected for element Value in Entry.

ตัวอย่างข้อความแสดงข้อผิดพลาด

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml.Reason: - Non null value expected for element Value in Entry

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Value> ขาดหายไปใต้องค์ประกอบ <Entry> ขององค์ประกอบ <InitialEntries> ของนโยบายการดำเนินการแมปค่าคีย์

การวินิจฉัย

  1. ระบุนโยบายการดำเนินการแมปค่าคีย์ที่เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้จากข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อของนโยบายการดำเนินการของการจับคู่ค่าคีย์คือ GetKVM

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Value in Entry
    
  2. ในนโยบายการดำเนินการแมปค่าคีย์ที่ล้มเหลว ให้ตรวจสอบว่ามีองค์ประกอบ <Entry> ใดที่มีองค์ประกอบ <Value> ที่ขาดหายไปภายใต้ <InitialEntries> หรือไม่

    ต่อไปนี้คือตัวอย่างนโยบายการดำเนินการแมปค่าคีย์ที่ไม่มีองค์ประกอบ <Value>

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
        <DisplayName>GetKVM3</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key>
                    <Parameter>k1</Parameter>
                </Key>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
        ...
    
    

ความละเอียด

ตรวจสอบว่าองค์ประกอบ <Entry> ทั้งหมดภายใต้องค์ประกอบ <InitialEntries> ในนโยบายการดำเนินการแมปค่าคีย์มีองค์ประกอบ <Value>

หากต้องการแก้ไขตัวอย่างนโยบายการดำเนินการของการจับคู่ค่าคีย์ที่แสดงด้านบน การเพิ่มองค์ประกอบ <Value> จะช่วยแก้ปัญหาได้ดังนี้

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
    <DisplayName>GetKVM3</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...