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

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

InvalidResourceType

הודעת השגיאה

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

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 דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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>
    

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

רזולוציה

מוודאים שלסקריפט המשאב שצוין באלמנט <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 דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

הודעת השגיאה &#39;לא צוין שם של RootElement&#39;.

מטרה

השגיאה הזו מתרחשת אם הרכיב <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 דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

הודעת השגיאה 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 דרך ממשק המשתמש או ה-API של Apigee נכשלת עם הודעת השגיאה הבאה:

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.

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

הודעת השגיאה &#39;למשאב אין הגדרות של רכיבים&#39;.

מטרה

השגיאה הזו מתרחשת אם קובץ המשאבים שצוין ברכיב <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>