פתרון בעיות שגיאה בהטמעה של מדיניות אימות הודעות SOAP

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

InvalidResourceType

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API נכשלת עם הודעת השגיאה הבאה:

Error Deploying Revision revision_number to environment
MessageValidation soap_message_validation_policy: Invalid Resource Type resource_type. It should be xsd or wsdl. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.

הודעת שגיאה לדוגמה

Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py.
It should be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;
Organization:gsc-hipaa;Environment:test.

דוגמה לצילום מסך של שגיאה

סיבה

השגיאה הזו מתרחשת אם הרכיב <ResourceURL> במדיניות SOAPMessageValidation מוגדר לסוג משאב שלא נתמך על ידי המדיניות. סוגי המשאבים הנתמכים הם xsd ו-wsdl.

אבחון

  1. מזהים את שם המדיניות SOAPMessageValidation ואת סוג המשאב הלא תקין שמשמש ברכיב <ResourceURL> של המדיניות. שני הפריטים האלה מופיעים בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות SOAPMessageValidation הוא SOAP-Message-Validation-1 וסוג המשאב הוא py.

    Error Deploying Revision 1 to test
    MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py. It should
    be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-
    hipaa;Environment:test.
    
  2. בודקים את ה-XML של מדיניות SOAPMessageValidation שנכשל. אם סוג המשאב שצוין ברכיב <ResourceURL> זהה לסוג המשאב הלא תקין שזוהה בשלב 1 שלמעלה, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה סוג המשאב הוא py, שזהה למה שמופיע בהודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
        name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://sample.com"> sampleObject</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>py://Script-1.py</ResourceURL>
    </MessageValidation>
    

    סוג המשאב שמשמש בפקודה <ResourceURL> הוא לא xsd או wsdl, ולכן הפריסה תיכשל עם השגיאה שמוצגת למעלה.

רזולוציה

צריך לוודא שסוג המשאב שצוין ברכיב <ResourceURL> של מדיניות SOAPMessageValidation מוגדר ל-xsd או ל-wsdl, ושהפורמט של קובץ המשאב תקין.

כדי לתקן את מדיניות SOAPMessageValidation שמוצגת למעלה, אפשר לשנות את סוג המשאב ל-xsd או ל-wsdl:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://sample.com"> sampleObject</Element>
    <SOAPMessage/>
    <Source>request</Source>
<ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
</MessageValidation>

ResourceCompileFailed

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API נכשלת עם הודעת השגיאה הבאה:

Error Deploying Revision revision_number to environment
MessageValidation soap_message_validation_policy: Failed to compile resource resource. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.

הודעת שגיאה לדוגמה

Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Failed to compile resource SOAP-Message-Validation-1.wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;Environment:test.

דוגמה לצילום מסך של שגיאה

סיבה

השגיאה הזו מתרחשת אם סקריפט המשאב שאליו יש הפניה ברכיב <ResourceURL> של מדיניות SOAPMessageValidation מכיל שגיאה שמונעת את ההידור שלו במהלך הפריסה.

אבחון

  1. מזהים את שם המדיניות SOAPMessageValidation ואת סקריפט המשאבים שמשמש במדיניות. שני הפריטים האלה מופיעים בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות SOAPMessageValidation הוא SOAP-Message-Validation-1 וסקריפט המשאב הוא SOAP-Message-Validation-1.wsdl.

    Error Deploying Revision 1 to test
    MessageValidation SOAP-Message-Validation-1: Failed to compile resource
    SOAP-Message-Validation-1.wsdl. Context
    Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;
    Environment:test.
    
  2. בודקים את ה-XML של המדיניות SOAPMessageValidation שנכשלה ומוודאים שסקריפט המשאב שצוין לרכיב <ResourceURL> תואם למה שמופיע בהודעת השגיאה.

    לדוגמה, במדיניות הבאה הרכיב <ResourceURL> מוגדר כ-SOAP-Message-Validation-1.wsdl, שזהה למה שמופיע בהודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://sample.com"> sampleObject</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
    </MessageValidation>
    
  3. מעיינים בקובץ הסקריפט של המשאב שזוהה בשלב 1, ובודקים אם יש בעיות פוטנציאליות שעלולות לגרום לשגיאות קומפילציה.

    דוגמה לקובץ סקריפט של משאב:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsd/">
        <wsdl:types>
            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:element name="request" type="xs:string"/>
            </xs:schema>
        </wsdl:types>
    </wsdl:definitions>
    

    מכיוון שהערך xmlns:wsdlמפנה לכתובת URL לא תקינה, הפריסה תיכשל עם השגיאה שמוצגת למעלה.

רזולוציה

מוודאים שלסקריפט של המשאב שצוין ברכיב <ResourceURL> של מדיניות SOAPMessageValidation אין בעיות שמונעות את ההידור שלו.

כדי לתקן את הסקריפט SOAP-Message-Validation-1.wsdl שמוצג למעלה, אפשר לשנות את xmlns:wsdl כך שיצביע על כתובת URL תקינה:

<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:element name="request" type="xs:string"/>
        </xs:schema>
    </wsdl:types>
</wsdl:definitions>

RootElementNameUnspecified

הודעת השגיאה

שמירת ה-proxy ל-API דרך ממשק המשתמש של Edge או דרך Edge Management API נכשלת עם הודעת השגיאה הבאה:

Error Saving Revision revision_number
MessageValidation soap_message_validation_policy:
RootElement name is not specified.

הודעת שגיאה לדוגמה

Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.

דוגמה לצילום מסך של שגיאה

סיבה

השגיאה הזו מתרחשת אם הרכיב <Element> במדיניות SOAPMessageValidation לא מכיל את השם של רכיב הבסיס.

אבחון

  1. מזהים את שם מדיניות ה-SOAPMessageValidation שבה התרחשה השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות של SOAPMessageValidation הוא SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. בודקים את ה-XML של מדיניות SOAPMessageValidation שנכשל. אם שם רכיב הבסיס שמשמש לאימות לא מצוין ברכיב <Element>, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה לא מצוין שם של רכיב הבסיס:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://schemas.xmlsoap.org/soap/prices"/>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

    מכיוון ששם רכיב הבסיס לא צוין, הפריסה תיכשל ותוצג השגיאה שמופיעה למעלה.

רזולוציה

מוודאים שהרכיב <Element> של מדיניות SOAPMessageValidation מכיל את רכיב הבסיס הנכון.

כדי לתקן את מדיניות SOAPMessageValidation שמוצגת למעלה, אפשר לשנות את <Element> ולהוסיף רכיב בסיס תקין כמו בדוגמה הבאה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

InvalidRootElementName

הודעת השגיאה

שמירת ה-proxy ל-API דרך ממשק המשתמש של Edge או דרך Edge Management API נכשלת עם הודעת השגיאה הבאה:

Error Saving Revision revision_number
MessageValidation soap_message_validation_policy: RootElement name root_element_name is invalid.

הודעת שגיאה לדוגמה

Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
is invalid.

דוגמה לצילום מסך של שגיאה

סיבה

השגיאה הזו מתרחשת אם הרכיב <Element> במדיניות SOAPMessageValidation מכיל שם של רכיב בסיס שלא עומד בכללי ה-XML לשמות תקינים של רכיבים.

אבחון

  1. מזהים את שם מדיניות ה-SOAPMessageValidation שבה התרחשה השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות של SOAPMessageValidation הוא SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. בודקים את ה-XML של מדיניות SOAPMessageValidation שנכשל. אם שם רכיב הבסיס שצוין ברכיב <Element> לא עומד בקריטריונים של שם רכיב XML תקין, זו הסיבה לשגיאה.

    לדוגמה, שם רכיב הבסיס במדיניות הבאה מתחיל במספר, ולכן הוא לא תקין. גם שם של רכיב שמכיל רווחים לא יהיה תקין.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
         <Element namespace="http://schemas.xmlsoap.org/soap/prices">1GetPriceResponse</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

רזולוציה

מוודאים שהרכיב <Element> של מדיניות SOAPMessageValidation מכיל שם תקין של רכיב בסיס.

כדי לתקן את מדיניות SOAPMessageValidation שמוצגת למעלה, אפשר לשנות את רכיב <Element> כך שיכיל שם של רכיב בסיס תקף, כמו שמוצג למטה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

NoElements

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש של Edge או דרך Edge Management API נכשלת עם הודעת השגיאה הבאה:

Error Deploying Revision revision_number
Resource "resource_url" has no element definitions.

הודעת שגיאה לדוגמה

Error Deploying Revision 2 to test
Resource "xsd://Script-1.xsd" has no element definitions.

דוגמה לצילום מסך של שגיאה

סיבה

השגיאה הזו מתרחשת אם קובץ המשאבים שצוין ברכיב <Resource> של מדיניות SOAPMessageValidation לא מכיל רכיבים שאפשר להשתמש בהם לאימות.

אבחון

  1. מזהים את ההגדרות של הרכיבים שחסרים בקובץ המשאבים מתוך הודעת השגיאה. לדוגמה, בשגיאה הבאה, קובץ המשאבים שבו נעשה שימוש הוא xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. בודקים את קובץ המשאבים שצוין בשלב 1. אם לא מוגדרים רכיבים, זו הסיבה לשגיאה.

    לדוגמה, קובץ המשאבים הבא Script-1.xsd לא מכיל אלמנטים:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    </xsd:schema>
    

    מכיוון שקובץ המשאבים לא מכיל רכיבים, הפריסה תיכשל עם השגיאה שמוצגת למעלה.

רזולוציה

מוודאים שקובץ המשאבים שמשמש במדיניות SOAPMessageValidation מכיל את הגדרות הרכיבים הרלוונטיות.

כדי לתקן את קובץ המשאבים לדוגמה שמוצג למעלה, אפשר לשנות את הקובץ xsd ולהוסיף את התוכן הבא:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="shipOrder" type="order"/>
<xsd:complexType name="order">
<xsd:sequence>
<xsd:element name="shipTo" type="shipAddress"/>
<xsd:element name="items" type="cdItems"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="shipAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItems">
<xsd:sequence>
<xsd:element name="item" type="cdItem" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItem">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="quantity" type="xsd:integer"/>
<xsd:element name="price" type="xsd:decimal"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>