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

คุณกำลังดูเอกสารประกอบของ 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 ซึ่งไม่ถูกต้อง ดังนั้น การทำให้พร็อกซี 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>
    ...