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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

InvalidResourceType

הודעת שגיאה

כשפורסים את ה-API של ה-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> במדיניות SOAPMessageAuthentication מוגדר לסוג משאב שלא נתמך במדיניות. סוגי המשאבים הנתמכים הם 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, ושהפורמט של קובץ המשאבים הוא נכון.

כדי לתקן את הדוגמה של מדיניות SOAPMessageAuthentication שמוצגת למעלה, אפשר לשנות את סוג המשאב ל-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

הודעת שגיאה

כשפורסים את ה-API של ה-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

הודעת שגיאה

כששומרים את ה-API של ה-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> של המדיניות SOAPMessageAuthentication מכיל את רכיב הבסיס הנכון.

כדי לתקן את מדיניות 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

הודעת שגיאה

כששומרים את ה-API של ה-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 מכיל שם חוקי של רכיב בסיס.

כדי לתקן את המדיניות SOAPMessageAuthentication שלמעלה, אפשר לשנות את הרכיב <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

הודעת שגיאה

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

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>
    

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

רזולוציה

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

כדי לתקן את קובץ המשאב לדוגמה שמוצג למעלה, אפשר לשנות את הקובץ 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>