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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 zasadach SOAPMessageValidation jest ustawiony na typ zasobu nieobsługiwany przez te zasady. Obsługiwane typy zasobów to xsd i wsdl.

Diagnostyka

  1. Określ 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 tym 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ź plik XML nieudanych zasad SOAPMessageValidation. Jeśli typ zasobu określony w elemencie <ResourceURL> pasuje do nieprawidłowego typu zasobu zidentyfikowanego w kroku 1 powyżej, to jest to przyczyna błędu.

    Na przykład te zasady określają typ zasobu jako py, co odpowiada temu, co znajduje się 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żyty w <ResourceURL> nie jest typem xsd ani wsdl, wdrożenie zakończy się niepowodzeniem i wyświetli się powyższy błąd.

Rozdzielczość

Sprawdź, czy typ zasobu określony w elemencie <ResourceURL>zasady SOAPMessageValidation ma wartość xsd lub wsdl oraz czy plik zasobu ma prawidłowy format.

Aby poprawić pokazane powyżej zasady SOAPMessageValidation, 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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> w zasadach SOAPMessageValidation, zawiera błąd, który uniemożliwia jego skompilowanie podczas wdrażania.

Diagnostyka

  1. Określ nazwę zasady SOAPMessageValidation i skrypt zasobu użyty w zasadzie. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w tym 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 spowodowała błąd, i upewnij się, że skrypt zasobu określony w elemencie <ResourceURL> jest zgodny z informacjami w komunikacie o błędzie.

    Na przykład te zasady określają element <ResourceURL> jako SOAP-Message-Validation-1.wsdl, co odpowiada 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 zasobu zidentyfikowany w kroku 1 i sprawdź, czy nie ma w nim potencjalnych problemów, 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:wsdlwskazuje nieprawidłowy adres URL, wdrożenie zakończy się niepowodzeniem i wyświetli się powyższy błąd.

Rozdzielczość

Sprawdź, czy skrypt zasobu określony w elemencie <ResourceURL> zasady SOAPMessageValidation nie zawiera żadnych problemów, które uniemożliwiają jego kompilację.

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

Zapisanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 zasadach SOAPMessageValidation nie zawiera nazwy elementu głównego.

Diagnostyka

  1. Określ 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 is not specified.
    
  2. Sprawdź plik XML nieudanych zasad SOAPMessageValidation. Jeśli nazwa elementu głównego użyta do weryfikacji nie jest określona w elemencie <Element>, to jest to przyczyną błędu.

    Na przykład te zasady nie określają 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 jest określona, wdrożenie zakończy się niepowodzeniem i wyświetli się powyższy błąd.

Rozdzielczość

Sprawdź, czy element <Element> w zasadach SOAPMessageValidation zawiera prawidłowy element główny.

Aby poprawić zasadę SOAPMessageValidation pokazaną powyżej, możesz zmodyfikować element <Element> i dodać 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

Zapisanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 zasadach SOAPMessageValidation zawiera nazwę elementu głównego, która nie jest zgodna z regułami XML dotyczącymi prawidłowego nazewnictwa elementów.

Diagnostyka

  1. Określ 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ź plik XML nieudanych zasad SOAPMessageValidation. Jeśli nazwa elementu głównego podana w elemencie <Element> nie spełnia kryteriów prawidłowej nazwy elementu XML, to jest to przyczyną błędu.

    Na przykład poniższe zasady mają nazwę elementu głównego, która zaczyna się od cyfry, co jest nieprawidłowe. Nieprawidłowa byłaby też nazwa elementu zawierająca spacje.

    <?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ć zasadę SOAPMessageValidation pokazaną powyżej, możesz zmodyfikować element <Element> tak, aby 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

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla się ten komunikat 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 zasobu określony w elemencie <Resource> zasady SOAPMessageValidation nie zawiera żadnych elementów, których można użyć do weryfikacji.

Diagnostyka

  1. Zidentyfikuj w komunikacie o błędzie plik zasobów, w którym brakuje definicji elementu. Na przykład w tym błędzie plik zasobu 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 wskazany w kroku 1. Jeśli nie zdefiniowano żadnych elementów, to jest to przyczyną 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>
    

    Ponieważ plik zasobów nie zawiera żadnych elementów, wdrożenie zakończy się niepowodzeniem i wyświetli się powyższy błąd.

Rozdzielczość

Sprawdź, czy plik zasobu używany w zasadach SOAPMessageValidation zawiera odpowiednie definicje elementów.

Aby poprawić pokazany powyżej przykładowy plik zasobu, możesz zmodyfikować plik xsd, dodając do niego te informacje:

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