Rozwiązywanie problemów związanych z błędem wdrożenia zasady weryfikacji wiadomości SOAP

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidResourceType

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:

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.

Przykładowy komunikat o błędzie

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.

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, jeśli element <ResourceURL> w zasadach SOAPMessageValidation ma wartość typu zasobu, który nie jest obsługiwany przez te zasady. Obsługiwane typy zasobów to xsd i wsdl.

Diagnostyka

  1. Zidentyfikuj nazwę zasady SOAPMessageValidation i nieprawidłowy typ zasobu użyty w elemencie <ResourceURL> zasady. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa zasady SOAPMessageValidation to SOAP-Message-Validation-1, a typ zasobu to 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. Sprawdź kod XML zasad SOAPMessageValidation, które nie zostały zaakceptowane. Jeśli typ zasobu określony dla elementu <ResourceURL> pasuje do nieprawidłowego typu zasobu zidentyfikowanego w kroku 1 powyżej, jest to przyczyna błędu.

    Na przykład w tej polityce typ zasobu to py, co jest zgodne z informacją w komunikacie o błędzie:

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

    Ponieważ typ zasobu używany w elementach <ResourceURL> nie jest xsd ani wsdl, wdrażanie zakończy się niepowodzeniem z powyżej wymienionym błędem.

Rozdzielczość

Upewnij się, że typ zasobu określony w elemencie <ResourceURL> zasady SOAPMessageValidation ma wartość xsd lub wsdl i że plik zasobu ma prawidłowe formatowanie.

Aby poprawić przykładową zasadę SOAPMessageValidation widoczną powyżej, możesz zmienić typ zasobu na xsd lub 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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:

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.

Przykładowy komunikat o błędzie

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.

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, jeśli skrypt zasobu, na który wskazuje element <ResourceURL> w zasadach SOAPMessageValidation, zawiera błąd uniemożliwiający jego skompilowanie podczas wdrażania.

Diagnostyka

  1. Określ nazwę zasady SOAPMessageValidation i skrypt zasobu używany w tej zasadzie. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa zasady SOAPMessageValidation to SOAP-Message-Validation-1, a skrypt zasobu to 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. Sprawdź kod XML zasady SOAPMessageValidation, która nie działa, i sprawdź, czy skrypt zasobu określony dla elementu <ResourceURL> jest zgodny z informacjami podanymi w komunikacie o błędzie.

    Na przykład w tej polityce element <ResourceURL> ma wartość SOAP-Message-Validation-1.wsdl, która jest zgodna z wartością w komunikacie o błędzie:

    <?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. Wyświetl plik skryptu zasobu z kroku 1 i sprawdź, czy występują w nim potencjalne problemy, które mogą powodować błędy kompilacji.

    Oto przykładowy plik skryptu zasobu:

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

    Ponieważ xmlns:wsdl wskazuje na nieprawidłowy adres URL, wdrożenie zakończy się niepowodzeniem z wyświetlonym powyżej błędem.

Rozdzielczość

Upewnij się, że skrypt zasobu podany w elemencie <ResourceURL> zasady SOAPMessageValidation nie ma żadnych problemów uniemożliwiających jego skompilowanie.

Aby poprawić widoczny powyżej skrypt SOAP-Message-Validation-1.wsdl, możesz zmodyfikować xmlns:wsdl tak, by wskazywał prawidłowy 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

Komunikat o błędzie

Zapisywanie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i pojawia się ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, jeśli element <Element> w polityce SOAPMessageValidation nie zawiera nazwy elementu.

Diagnostyka

  1. Identyfikuje nazwę zasady SOAPMessageValidation, w której wystąpił błąd. Na przykład w przypadku tego błędu nazwa zasady SOAPMessageValidation to SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Sprawdź kod XML zasad SOAPMessageValidation, które nie zostały zaakceptowane. Jeśli w elemencie <Element> nie jest określone imię elementu katalogu, który jest używany do walidacji, to jest to przyczyna błędu.

    Na przykład te zasady nie określają nazwy elementu katalogu katalogu katalogu:

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

    Ponieważ nie podano nazwy elementu głównego, wdrożenie zakończy się niepowodzeniem z powyżej wymienionym błędem.

Rozdzielczość

Upewnij się, że element <Element> w zasadzie SOAPMessageValidation zawiera prawidłowy element główny.

Aby poprawić pokazaną powyżej zasadę SOAPMessageValidation, możesz zmodyfikować <Element> i dodać prawidłowy element główny w ten sposób:

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

Komunikat o błędzie

Zapisywanie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i pojawia się ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, jeśli element <Element> w zasadzie SOAPMessageValidation zawiera nazwę elementu głównego, która nie jest zgodna z zasadami XML dotyczącymi prawidłowej nazwy elementu.

Diagnostyka

  1. Identyfikuje nazwę zasady SOAPMessageValidation, w której wystąpił błąd. Na przykład w przypadku tego błędu nazwa zasady SOAPMessageValidation to SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Sprawdź kod XML polityki SOAPMessageValidation, która nie przeszła walidacji. Jeśli nazwa elementu głównego podana w elemencie <Element> nie spełnia kryteriów prawidłowej nazwy elementu XML, jest to przyczyna błędu.

    Na przykład w poniższej zasadzie nazwa elementu głównego zaczyna się od liczby, która jest nieprawidłowa. Nazwa elementu zawierająca spacje również byłaby nieprawidłowa.

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

Rozdzielczość

Upewnij się, że element <Element> w zasadzie SOAPMessageValidation zawiera prawidłową nazwę elementu głównego.

Aby poprawić zasadę SOAPMessageValidation, możesz zmodyfikować element <Element>, aby zawierał prawidłową nazwę elementu wyższego poziomu, jak pokazano poniżej:

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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetleniem tego komunikatu o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, jeśli plik zasobów określony w elemencie <Resource> zasady SOAPMessageValidation nie zawiera żadnych elementów, które można wykorzystać do weryfikacji.

Diagnostyka

  1. Na podstawie komunikatu o błędzie określ plik zasobów, w którym brakuje definicji elementów. Na przykład w poniższym błędzie plik zasobów użyty w funkcji to xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Sprawdź plik zasobu zidentyfikowany w kroku 1. Jeśli nie ma zdefiniowanych elementów, to jest przyczyna błędu.

    Na przykład ten plik zasobów Script-1.xsd nie zawiera żadnych elementów:

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

    Plik zasobów nie zawiera żadnych elementów, dlatego wdrożenie nie powiedzie się z powodu opisanego powyżej błędu.

Rozdzielczość

Upewnij się, że plik zasobu używany w zasadach SOAPMessageValidation zawiera odpowiednie definicje elementów.

Aby poprawić przykładowy plik zasobu pokazany powyżej, możesz zmodyfikować plik xsd, aby dodać do niego następujące treści:

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