Risoluzione dei problemi relativi agli errori di deployment dei criteri di convalida dei messaggi SOAP

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

InvalidResourceType

Messaggio di errore

Il deployment del proxy API tramite l'API o la UI Apigee non riesce e viene visualizzato questo messaggio di errore:

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.

Esempio di messaggio di errore

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.

Screenshot di esempio dell'errore

Messaggio di errore relativo a una risorsa non valida.

Causa

Questo errore si verifica se l'elemento <ResourceURL> nel criterio SOAPMessageValidation è impostato su un tipo di risorsa non supportato dal criterio. I tipi di risorse supportati sono xsd e wsdl.

Diagnosi

  1. Identifica il nome del criterio SOAPMessageValidation e il tipo di risorsa non valido utilizzato nell'elemento <ResourceURL> del criterio. Puoi trovare entrambi gli elementi nel messaggio di errore. Ad esempio, nel seguente errore il nome della policy SOAPMessageValidation è SOAP-Message-Validation-1 e il tipo di risorsa è 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. Esamina il file XML della policy SOAPMessageValidation non riuscita. Se il tipo di risorsa specificato per l'elemento <ResourceURL> corrisponde al tipo di risorsa non valido identificato nel passaggio 1 precedente, questa è la causa dell'errore.

    Ad esempio, la seguente policy specifica il tipo di risorsa come py, che corrisponde a quanto riportato nel messaggio di errore:

    <?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>
    

    Poiché il tipo di risorsa utilizzato in <ResourceURL> non è xsd o wsdl, il deployment non andrà a buon fine e verrà visualizzato l'errore mostrato sopra.

Risoluzione

Assicurati che il tipo di risorsa specificato nell'elemento <ResourceURL> del criterio SOAPMessageValidation sia impostato su xsd o wsdl e che il file di risorse utilizzi la formattazione corretta.

Per correggere la policy SOAPMessageValidation di esempio mostrata sopra, puoi modificare il tipo di risorsa in xsd o 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

Messaggio di errore

Il deployment del proxy API tramite l'API o la UI Apigee non riesce e viene visualizzato questo messaggio di errore:

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.

Esempio di messaggio di errore

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.

Screenshot di esempio dell'errore

Impossibile compilare il messaggio di errore della risorsa.

Causa

Questo errore si verifica se lo script della risorsa a cui viene fatto riferimento nell'elemento <ResourceURL> del criterio SOAPMessageValidation contiene un errore che ne impedisce la compilazione durante il deployment.

Diagnosi

  1. Identifica il nome della policy SOAPMessageValidation e lo script della risorsa utilizzato nella policy. Puoi trovare entrambi gli elementi nel messaggio di errore. Ad esempio, nel seguente errore il nome della policy SOAPMessageValidation è SOAP-Message-Validation-1 e lo script della risorsa è 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. Esamina il file XML del criterio SOAPMessageValidation non riuscito e verifica che lo script della risorsa specificato per l'elemento <ResourceURL> corrisponda a quello nel messaggio di errore.

    Ad esempio, la seguente policy specifica l'elemento <ResourceURL> come SOAP-Message-Validation-1.wsdl, che corrisponde a quanto riportato nel messaggio di errore:

    <?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. Visualizza il file di script delle risorse identificato nel passaggio 1 e verifica la presenza di potenziali problemi che possono causare errori di compilazione.

    Ecco un esempio di file di script delle risorse:

    <?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>
    

    Poiché xmlns:wsdl punta a un URL non valido, il deployment non riuscirà e verrà visualizzato l'errore mostrato sopra.

Risoluzione

Assicurati che lo script della risorsa specificato nell'elemento <ResourceURL> del criterio SOAPMessageValidation non presenti problemi che ne impediscano la compilazione.

Per correggere lo script SOAP-Message-Validation-1.wsdl mostrato sopra, puoi modificare xmlns:wsdl in modo che punti a un URL valido:

<?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

Messaggio di errore

Il salvataggio del proxy API tramite la UI o l'API Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Messaggio di errore: nome RootElement non specificato.

Causa

Questo errore si verifica se l'elemento <Element> nel criterio SOAPMessageValidation non contiene il nome dell'elemento radice.

Diagnosi

  1. Identifica il nome del criterio SOAPMessageValidation in cui si è verificato l'errore. Ad esempio, nel seguente errore, il nome della policy SOAPMessageValidation è SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Esamina il file XML della policy SOAPMessageValidation non riuscita. Se il nome dell'elemento radice utilizzato per la convalida non è specificato nell'elemento <Element>, questo è il motivo dell'errore.

    Ad esempio, la seguente policy non specifica il nome dell'elemento radice:

    <?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>
    

    Poiché il nome dell'elemento principale non è specificato, il deployment non andrà a buon fine e verrà visualizzato l'errore riportato sopra.

Risoluzione

Assicurati che l'elemento <Element> del criterio SOAPMessageValidation contenga l'elemento principale corretto.

Per correggere la policy SOAPMessageValidation mostrata sopra, puoi modificare <Element> e aggiungere un elemento radice valido come di seguito:

<?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

Messaggio di errore

Il salvataggio del proxy API tramite la UI o l'API Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Messaggio di errore RootElement name 1GetPriceResponse is invalid.

Causa

Questo errore si verifica se l'elemento <Element> nel criterio SOAPMessageValidation contiene un nome di elemento principale che non rispetta le regole XML per la denominazione valida degli elementi.

Diagnosi

  1. Identifica il nome del criterio SOAPMessageValidation in cui si è verificato l'errore. Ad esempio, nel seguente errore, il nome della policy SOAPMessageValidation è SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Esamina il file XML della policy SOAPMessageValidation non riuscita. Se il nome dell'elemento principale specificato nell'elemento <Element> non corrisponde ai criteri per un nome di elemento XML valido, questa è la causa dell'errore.

    Ad esempio, il seguente criterio ha un nome dell'elemento radice che inizia con un numero, il che non è valido. Anche un nome di elemento contenente spazi non è valido.

    <?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>
    

Risoluzione

Assicurati che l'elemento <Element> del criterio SOAPMessageValidation contenga un nome di elemento principale valido.

Per correggere la policy SOAPMessageValidation mostrata sopra, puoi modificare l'elemento <Element> in modo che contenga un nome di elemento radice valido, come mostrato di seguito:

<?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

Messaggio di errore

Il deployment del proxy API tramite l'API o la UI Apigee non riesce e viene visualizzato questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio dell'errore

Messaggio di errore La risorsa non ha definizioni di elementi.

Causa

Questo errore si verifica se il file di risorse specificato nell'elemento <Resource> della policy SOAPMessageValidation non contiene elementi che possono essere utilizzati per la convalida.

Diagnosi

  1. Identifica le definizioni degli elementi mancanti nel file di risorse dal messaggio di errore. Ad esempio, nel seguente errore, il file di risorse utilizzato è xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Esamina il file di risorse identificato nel passaggio 1. Se non sono definiti elementi, allora è questa la causa dell'errore.

    Ad esempio, il seguente file di risorse Script-1.xsd non contiene elementi:

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

    Poiché il file di risorse non contiene elementi, il deployment non andrà a buon fine e verrà visualizzato l'errore mostrato sopra.

Risoluzione

Assicurati che il file di risorse utilizzato nel criterio SOAPMessageValidation contenga le definizioni degli elementi pertinenti.

Per correggere il file di risorse di esempio mostrato sopra, puoi modificare il file xsd per aggiungere i seguenti contenuti:

<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>