Fehlerbehebung bei der Bereitstellung der SOAP Richtlinie für die Nachrichtenvalidierung

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

InvalidResourceType

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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.

Beispiel für Fehlermeldung

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.

Beispiel für eine Fehlermeldung

Fehlermeldung wegen einer ungültigen Ressource

Ursache

Dieser Fehler tritt auf, wenn für das <ResourceURL>-Element in der Richtlinie "SOAPMessageValidation" ein Ressourcentyp festgelegt ist, der von der Richtlinie nicht unterstützt wird. Unterstützte Ressourcentypen sind xsd und wsdl.

Diagnose

  1. Ermitteln Sie den Namen für die SOAPMessageValidation-Richtlinie sowie den ungültigen Ressourcentyp, der im <ResourceURL>-Element der Richtlinie verwendet wird. Sie finden beides in der Fehlermeldung. Beispielsweise lautet in der folgenden Fehlermeldung der Name der SOAPMessageValidation-Richtlinie SOAP-Message-Validation-1 und der Ressourcentyp 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. Prüfen Sie die XML-Datei der fehlerhaften SOAPMessageValidation-Richtlinie. Wenn der für das <ResourceURL>-Element angegebene Ressourcentyp dem in Schritt 1 ermittelten ungültigen Ressourcentyp entspricht, ist dies die Fehlerursache.

    Die folgende Richtlinie legt beispielsweise für den Ressourcentyp py fest. Dies entspricht den Angaben in der Fehlermeldung:

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

    Da der in <ResourceURL> verwendete Ressourcentyp nicht xsd oder wsdl ist, schlägt die Bereitstellung mit dem oben gezeigten Fehler fehl.

Lösung

Achten Sie darauf, dass der Ressourcentyp, der im <ResourceURL>-Element der SOAPMessageValidation-Richtlinie angegeben ist, entweder xsd oder wsdl lautet und dass die Ressourcendatei das richtige Format hat.

Um die oben angezeigte SOAPMessageValidation-Beispielrichtlinie zu korrigieren, können Sie den Ressourcentyp entweder in xsd oder wsdl ändern:

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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.

Beispiel für Fehlermeldung

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.

Beispiel für eine Fehlermeldung

Fehlermeldung zur fehlgeschlagenen Zusammenstellung der Ressourcen

Ursache

Dieser Fehler tritt auf, wenn das Ressourcenskript, auf das im <ResourceURL>-Element der SOAPMessageValidation-Richtlinie verwiesen wird, einen Fehler enthält, der das Zusammenstellen der Ressourcen während der Bereitstellung verhindert.

Diagnose

  1. Ermitteln Sie den Namen der SOAPMessageValidation-Richtlinie und das in der Richtlinie verwendete Ressourcenskript. Sie finden beides in der Fehlermeldung. In der folgenden Fehlermeldung lautet beispielsweise der Name der SOAPMessageValidation-Richtlinie SOAP-Message-Validation-1 und das Ressourcenskript 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. Prüfen Sie die fehlerhafte XML-Datei der SOAPMessageValidation-Richtlinie und stellen Sie sicher, dass das für das Element <ResourceURL> angegebene Ressourcenskript mit dem in der Fehlermeldung übereinstimmt.

    Die folgende Richtlinie gibt beispielsweise das Element <ResourceURL> als SOAP-Message-Validation-1.wsdl an, was dem Inhalt der Fehlermeldung entspricht:

    <?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. Rufen Sie die in Schritt 1 ermittelte Ressourcenskriptdatei auf und prüfen Sie, ob ein Problem vorliegt, das zu Fehlern bei der Zusammenstellung führen kann.

    Im Folgenden sehen Sie eine Beispieldatei für ein Ressourcenskript:

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

    Da xmlns:wsdl auf eine ungültige URL verweist, schlägt die Bereitstellung mit dem obigen Fehler fehl.

Lösung

Achten Sie darauf, dass das im Element <ResourceURL> angegebene Ressourcenskript der SOAPMessageValidation-Richtlinie keine Probleme aufweist, die es an einer Kompilierung hindern.

Zur Korrektur des oben gezeigten SOAP-Message-Validation-1.wsdl-Skripts können Sie xmlns:wsdl ändern und auf eine gültige URL verweisen:

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

Fehlermeldung

Das Speichern eines API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für eine Fehlermeldung

Fehlermeldung wegen eines nicht angegebenen RootElement-Namens

Ursache

Dieser Fehler tritt auf, wenn das Element <Element> in der SOAPMessageValidation-Richtlinie nicht den Namen des Stammelements enthält.

Diagnose

  1. Ermitteln Sie den Namen der SOAPMessageValidation-Richtlinie, in der der Fehler aufgetreten ist. In der folgenden Fehlermeldung lautet der Name der SOAPMessageValidation-Richtlinie beispielsweise SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Prüfen Sie die XML-Datei der fehlerhaften SOAPMessageValidation-Richtlinie. Wenn der für die Validierung verwendete Name des Stammelements nicht für das <Element>-Element angegeben ist, ist dies die Fehlerursache.

    Die folgende Richtlinie legt beispielsweise nicht den Namen des Stammelements fest:

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

    Da kein Name für das Stammelement angegeben ist, schlägt die Bereitstellung mit dem obigen Fehler fehl.

Lösung

Achten Sie darauf, dass das Element <Element> der SOAPMessageValidation-Richtlinie das richtige Stammelement enthält.

Um die oben angezeigte SOAPMessageValidation-Richtlinie zu korrigieren, können Sie <Element> ändern und ein gültiges Stammelement hinzufügen:

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

Fehlermeldung

Das Speichern eines API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für eine Fehlermeldung

Fehlermeldung zum ungültigen RootElement-Namen &quot;1GetPriceResponse&quot;

Ursache

Dieser Fehler tritt auf, wenn das Element <Element> in der SOAPMessageValidation-Richtlinie einen Stammelementnamen enthält, der nicht den XML-Regeln für gültige Elementnamen entspricht.

Diagnose

  1. Ermitteln Sie den Namen der SOAPMessageValidation-Richtlinie, in der der Fehler aufgetreten ist. In der folgenden Fehlermeldung lautet beispielsweise der Name der SOAPMessageValidation-Richtlinie SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Prüfen Sie die XML-Datei der fehlerhaften SOAPMessageValidation-Richtlinie. Wenn der im <Element>-Element angegebene Stammelementname nicht mit den Kriterien für einen gültigen XML-Elementnamen übereinstimmt, ist dies der Grund für den Fehler.

    Die folgende Richtlinie hat beispielsweise einen Stammelementnamen, der mit einer ungültigen Ziffer beginnt. Ein Elementname mit Leerzeichen ist ebenfalls ungültig.

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

Lösung

Achten Sie darauf, dass das Element <Element> der SOAPMessageValidation-Richtlinie einen gültigen Stammelementnamen enthält.

Um die oben dargestellte SOAPMessageValidation-Richtlinie zu korrigieren, können Sie das <Element>-Element so ändern, dass es einen gültigen Namen für das Stammelement enthält:

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für eine Fehlermeldung

Fehlermeldung für eine Ressource ohne Elementdefinition

Ursache

Dieser Fehler tritt auf, wenn die Ressourcendatei, die im <Resource>-Element der SOAPMessageValidation-Richtlinie angegeben ist, keine Elemente enthält, die für die Validierung verwendet werden können.

Diagnose

  1. Ermitteln Sie in der Fehlermeldung die Ressourcendatei mit den fehlenden Elementdefinitionen. In der folgenden Fehlermeldung lautet die verwendete Ressourcendatei beispielsweise xsd://Script-1.xsd.

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Prüfen Sie die in Schritt 1 ermittelte Ressourcendatei. Wenn keine Elemente definiert sind, ist dies die Fehlerursache.

    Die folgende Ressourcendatei Script-1.xsd enthält beispielsweise keine Elemente:

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

    Da die Ressourcendatei keine Elemente enthält, schlägt die Bereitstellung mit dem oben angezeigten Fehler fehl.

Lösung

Prüfen Sie, ob die in der SOAPMessageValidation-Richtlinie verwendete Ressourcendatei die relevanten Elementdefinitionen enthält.

Zur Korrektur der oben dargestellten Beispiel-Ressourcendatei können Sie die Datei xsd ändern und den folgenden Inhalt hinzufügen:

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