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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

InvalidResourceType

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się ten komunikat 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 zasadzie SOAPMessageValidation jest ustawiony na typ zasobu, który nie jest obsługiwany przez tę zasadę. Obsługiwane typy zasobów to xsd i wsdl.

Diagnostyka

  1. Identyfikuje nazwę zasady SOAPMessageValidation i nieprawidłowy typ zasobu używany w elemencie <ResourceURL> tej 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ź niepoprawny kod XML zasady SOAPMessageValidation. Jeśli typ zasobu określony dla elementu <ResourceURL> pasuje do nieprawidłowego typu zasobu określonego w kroku 1 powyżej, to jest przyczyną błędu.

    Na przykład ta zasada określa typ zasobu jako py, który jest zgodny z treścią komunikatu 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>
    

    Jako że typ zasobu używany w zasadzie <ResourceURL> nie jest typu xsd ani wsdl, wdrożenie nie powiedzie się z powodu powyższego błędu.

Rozdzielczość

Upewnij się, że typ zasobu określony w elemencie <ResourceURL> zasady SOAPMessageValidation jest ustawiony na xsd lub wsdl oraz że plik zasobów 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 UI lub Edge Management API nie powiedzie się i wyświetli się ten komunikat 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, do którego odwołuje się element <ResourceURL> zasady SOAPMessageValidation, zawiera błąd, który uniemożliwia jego skompilowanie podczas wdrażania.

Diagnostyka

  1. Określ nazwę zasady SOAPMessageValidation i skrypt zasobów używany w 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ź niepoprawny kod XML zasady SOAPMessageValidation i upewnij się, że skrypt zasobu określony dla elementu <ResourceURL> jest zgodny z tym, który wyświetla się w komunikacie o błędzie.

    Na przykład ta zasada określa element <ResourceURL> jako SOAP-Message-Validation-1.wsdl, co jest zgodne z treścią komunikatu 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 zasobów zidentyfikowany w kroku 1 i sprawdź, czy są jakieś potencjalnych problemów, które mogą powodować błędy kompilacji.

    Oto przykładowy plik skryptu zasobów:

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

    Wdrożenie xmlns:wsdl wskazuje nieprawidłowy adres URL, nie powiedzie się z powodu powyższego błędu.

Rozdzielczość

Upewnij się, że skrypt zasobu określony w elemencie <ResourceURL> metody W zasadzie SOAPMessageValidation nie występują żadne problemy uniemożliwiające jej skompilowanie.

Aby poprawić widoczny powyżej skrypt SOAP-Message-Validation-1.wsdl, możesz zmień 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 przy użyciu interfejsu Edge UI lub Edge Management API kończy się niepowodzeniem z 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 zasadzie SOAPMessageValidation nie zawiera nazwy elementu głównego.

Diagnostyka

  1. Identyfikuje nazwę zasady SOAPMessageValidation, w której wystąpił błąd. Dla: na przykład w tym błędzie nazwa zasady SOAPMessageValidation to SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Sprawdź niepoprawny kod XML zasady SOAPMessageValidation. Jeśli nazwa elementu głównego używany do weryfikacji nie jest określony w elemencie <Element>, to jest przyczyny błędu.

    Na przykład ta zasada nie określa nazwy elementu głównego:

    <?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ż nazwa elementu głównego nie została określona, wdrożenie nie powiedzie się z powodu powyższego błędu.

Rozdzielczość

Sprawdź, czy element <Element> zasady SOAPMessageValidation zawiera właściwy element główny.

Aby poprawić pokazaną powyżej zasadę SOAPMessageValidation, możesz zmodyfikować <Element> i dodaj prawidłowy element główny, jak 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>

InvalidRootElementName

Komunikat o błędzie

Zapisywanie serwera proxy interfejsu API przy użyciu interfejsu Edge UI lub Edge Management API kończy się niepowodzeniem z 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 niezgodną z regułami XML dla prawidłowego elementu nazwy.

Diagnostyka

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

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Sprawdź niepoprawny kod XML zasady SOAPMessageValidation. Jeśli nazwa elementu głównego określone w elemencie <Element> nie spełnia kryteriów prawidłowego kodu XML nazwa elementu, to to jest przyczyną błędu.

    Na przykład w poniższej zasadzie nazwa elementu głównego zaczyna się od który jest nieprawidłowy. 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ść

Sprawdź, czy element <Element> zasady SOAPMessageValidation zawiera prawidłową nazwę elementu głównego.

Aby poprawić pokazaną powyżej zasadę SOAPMessageValidation, możesz zmodyfikować <Element> element, który będzie zawierał prawidłową nazwę elementu głównego, 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

Nie udało się wdrożyć serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API z tym komunikatem 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> funkcji zasada SOAPMessageValidation nie zawiera żadnych elementów, których można użyć do weryfikacji.

Diagnostyka

  1. Wskaż plik zasobów, w którym brakuje definicji elementów z komunikatu o błędzie. Na przykład w tym błędzie plik zasobów użyty w pliku to xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Sprawdź plik zasobów wskazany w kroku 1. Jeśli nie zdefiniowano żadnych elementów, to jest jego przyczyną.

    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 się nie uda z powyższym błędem.

Rozdzielczość

Sprawdź, czy plik zasobów używany w zasadzie SOAPMessageValidation zawiera definicji odpowiednich elementów.

Aby poprawić przykładowy plik zasobów widoczny powyżej, możesz zmodyfikować plik xsd aby dodać tę treść:

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