Dépannage des erreurs de déploiement de la règle de validation de message SOAP

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

InvalidResourceType

Message d'erreur

Le déploiement du proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec ce message d'erreur:

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.

Exemple de message d'erreur

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.

Exemple de capture d'écran d'erreur

Cause

Cette erreur se produit si l'élément <ResourceURL> de la règle SOAPMessageValidation est défini sur un type de ressource non compatible avec la règle. Les types de ressources compatibles sont xsd et wsdl.

Diagnostic

  1. Identifiez le nom de la règle SOAPMessageValidation et le type de ressource non valide utilisé dans l'élément <ResourceURL> de la règle. Ces deux éléments se trouvent dans le message d'erreur. Par exemple, dans l'erreur suivante, le nom de la règle SOAPMessageValidation est SOAP-Message-Validation-1 et le type de ressource est 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. Examinez le fichier XML de la règle SOAP défaillante. Si le type de ressource spécifié pour l'élément <ResourceURL> correspond au type de ressource non valide identifié à l'étape 1 ci-dessus, il s'agit de la cause de l'erreur.

    Par exemple, la règle suivante spécifie le type de ressource en tant que py, qui correspond au contenu du message d'erreur :

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

    Comme le type de ressource utilisé dans <ResourceURL> n'est pas xsd ou wsdl, le déploiement échouera avec l'erreur ci-dessus.

Solution

Assurez-vous que le type de ressource spécifié dans l'élément <ResourceURL> de la règle SOAPMessageValidation est défini sur xsd ou wsdl et que le format du type de ressource est correct.

Pour corriger l'exemple de règle SOAPMessageValidation affiché ci-dessus, vous pouvez remplacer le type de ressource par xsd ou 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

Message d'erreur

Le déploiement du proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec ce message d'erreur:

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.

Exemple de message d'erreur

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.

Exemple de capture d'écran d'erreur

Cause

Cette erreur se produit si le script de ressource référencé dans l'élément <ResourceURL> de la règle SOAPMessageValidation contient une erreur qui empêche sa compilation pendant le déploiement.

Diagnostic

  1. Identifiez le nom de la règle SOAPMessageValidation et le script de ressource utilisé dans la règle. Ces deux éléments se trouvent dans le message d'erreur. Par exemple, dans l'erreur suivante, le nom de la règle SOAPMessageValidation est SOAP-Message-Validation-1 et le script de ressource est 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. Examinez le fichier XML de la règle SOAPMessageValidation défaillante et vérifiez que le script de ressource spécifié pour l'élément <ResourceURL> correspond au contenu du message d'erreur.

    Par exemple, la règle suivante spécifie l'élément <ResourceURL> en tant que SOAP-Message-Validation-1.wsdl, ce qui correspond au contenu du message d'erreur :

    <?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. Affichez le fichier de script de ressource identifié à l'étape 1 et vérifiez s'il existe des problèmes potentiels pouvant entraîner des erreurs de compilation.

    Voici un exemple de fichier de script de ressource :

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

    Comme xmlns:wsdl pointe vers une URL non valide, le déploiement échoue et renvoie l'erreur ci-dessus.

Solution

Assurez-vous que le script de ressource spécifié dans l'élément <ResourceURL> de la règle SOAPMessageValidation ne présente aucun problème empêchant sa compilation.

Pour corriger le script SOAP-Message-Validation-1.wsdl présenté ci-dessus, vous pouvez modifier la valeur xmlns:wsdl pour qu'elle pointe vers une URL valide :

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

Message d'erreur

L'enregistrement du proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec ce message d'erreur:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Cette erreur se produit si l'élément <Element> de la règle SOAP ne contient pas le nom de l'élément racine.

Diagnostic

  1. Identifiez le nom de la règle SOAPMessageValidation où l'erreur s'est produite. Par exemple, dans l'erreur suivante, le nom de la règle SOAPMessageValidation est SOAP-Message-Validation-1 :

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Examinez le fichier XML de la règle SOAP défaillante. Si le nom de l'élément racine utilisé pour la validation n'est pas spécifié dans l'élément <Element>, il s'agit de la cause de l'erreur.

    Par exemple, la règle suivante ne spécifie pas le nom de l'élément racine :

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

    Comme le nom de l'élément racine n'est pas spécifié, le déploiement échoue avec l'erreur ci-dessus.

Solution

Vérifiez que l'élément <Element> de la règle SOAPMessageValidation contient l'élément racine approprié.

Pour corriger la règle SOAPMessageValidation affichée ci-dessus, vous pouvez modifier le champ <Element> et ajouter un élément racine valide comme suit :

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

Message d'erreur

L'enregistrement du proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec ce message d'erreur:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Cette erreur se produit si l'élément <Element> de la règle SOAPMessageValidation contient un nom d'élément racine qui ne respecte pas les règles XML de dénomination d'élément valide.

Diagnostic

  1. Identifiez le nom de la règle SOAPMessageValidation où l'erreur s'est produite. Par exemple, dans l'erreur suivante, le nom de la règle SOAPMessageValidation est SOAP-Message-Validation-1 :

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Examinez le fichier XML de la règle SOAP défaillante. Si le nom de l'élément racine spécifié dans l'élément <Element> ne correspond pas aux critères de validité de nom d'élément XML, il s'agit de la cause de l'erreur.

    Par exemple, la règle suivante comporte un nom d'élément racine commençant par un nombre, ce qui est incorrect. Un nom d'élément contenant des espaces est également incorrect.

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

Solution

Assurez-vous que l'élément <Element> de la règle SOAPMessageValidation contient un nom d'élément racine valide.

Pour corriger la règle SOAPMessageValidation présentée ci-dessus, vous pouvez modifier l'élément <Element> afin qu'il contienne un nom d'élément racine valide, comme indiqué ci-dessous :

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

Message d'erreur

Le déploiement du proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec ce message d'erreur:

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

Exemple de message d'erreur

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

Exemple de capture d'écran d'erreur

Cause

Cette erreur se produit si le fichier de ressources spécifié dans l'élément <Resource> de la règle SOAPMessageValidation ne contient aucun élément pouvant être utilisé pour la validation.

Diagnostic

  1. Identifiez les définitions d'éléments manquantes du fichier de ressources dans le message d'erreur. Par exemple, dans l'erreur suivante, le fichier de ressources utilisé dans est xsd://Script-1.xsd :

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Examinez le fichier de ressources identifié à l'étape 1. Si aucun élément n'est défini, il s'agit de la cause de l'erreur.

    Par exemple, le fichier de ressources Script-1.xsd ne contient aucun élément :

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

    Comme le fichier de ressources ne comporte aucun élément, le déploiement échoue et renvoie l'erreur ci-dessus.

Solution

Assurez-vous que le fichier de ressources utilisé dans la règle SOAPMessageValidation contient les définitions d'éléments appropriées.

Pour corriger l'exemple de fichier de ressources présenté ci-dessus, vous pouvez modifier le fichier xsd afin d'ajouter le contenu suivant :

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