Pemecahan masalah error deployment kebijakan SOAP Message Validation

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.

InvalidResourceType

Pesan Error

Deployment proxy API melalui UI Apigee atau API gagal dengan pesan error ini:

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.

Contoh Pesan Error

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.

Contoh Screenshot Error

Pesan error resource tidak valid.

Penyebab

Error ini terjadi jika elemen <ResourceURL> dalam kebijakan SOAPMessageValidation disetel ke jenis resource yang tidak didukung oleh kebijakan. Jenis resource yang didukung adalah xsd dan wsdl.

Diagnosis

  1. Identifikasi nama kebijakan SOAPMessageValidation dan jenis resource yang tidak valid yang digunakan dalam elemen <ResourceURL> kebijakan. Anda dapat menemukan kedua item ini di pesan error. Misalnya, dalam error berikut, nama kebijakan SOAPMessageValidation adalah SOAP-Message-Validation-1 dan jenis resource-nya adalah 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. Periksa XML kebijakan SOAPMessageValidation yang gagal. Jika jenis resource yang ditentukan untuk elemen <ResourceURL> cocok dengan jenis resource yang tidak valid yang diidentifikasi dalam Langkah 1 di atas, maka itulah penyebab error.

    Misalnya, kebijakan berikut menentukan jenis resource sebagai py, yang cocok dengan isi pesan error:

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

    Karena jenis resource yang digunakan di <ResourceURL> bukan xsd atau wsdl, deployment akan gagal dengan error yang ditunjukkan di atas.

Resolusi

Pastikan jenis resource yang ditetapkan di elemen <ResourceURL> kebijakan SOAPMessageValidation disetel ke xsd atau wsdl, dan file resource menggunakan format yang benar.

Untuk memperbaiki contoh kebijakan SOAPMessageValidation yang ditampilkan di atas, Anda dapat mengubah jenis resource menjadi xsd atau 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

Pesan Error

Deployment proxy API melalui UI Apigee atau API gagal dengan pesan error ini:

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.

Contoh Pesan Error

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.

Contoh Screenshot Error

Gagal mengompilasi pesan error resource.

Penyebab

Error ini terjadi jika skrip resource yang dirujuk dalam elemen <ResourceURL> kebijakan SOAPMessageValidation berisi error yang mencegah kompilasinya selama deployment.

Diagnosis

  1. Identifikasi nama kebijakan SOAPMessageValidation dan skrip resource yang digunakan dalam kebijakan. Anda dapat menemukan kedua item ini di pesan error. Misalnya, dalam error berikut, nama kebijakan SOAPMessageValidation adalah SOAP-Message-Validation-1 dan skrip resource-nya adalah 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. Periksa XML kebijakan SOAPMessageValidation yang gagal dan pastikan skrip resource yang ditentukan untuk elemen <ResourceURL> cocok dengan yang ada dalam pesan error.

    Misalnya, kebijakan berikut menetapkan elemen <ResourceURL> sebagai SOAP-Message-Validation-1.wsdl, yang cocok dengan isi pesan error:

    <?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. Lihat file skrip sumber daya yang diidentifikasi di Langkah 1 dan lihat apakah ada potensi masalah yang dapat mengakibatkan error kompilasi.

    Berikut adalah contoh file skrip resource:

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

    Karena xmlns:wsdl mengarah ke URL yang tidak valid, deployment akan gagal dengan error yang ditampilkan di atas.

Resolusi

Pastikan skrip resource yang ditentukan dalam elemen <ResourceURL> dari Kebijakan SOAPMessageValidation tidak memiliki masalah apa pun yang mencegahnya dikompilasi.

Untuk memperbaiki skrip SOAP-Message-Validation-1.wsdl yang ditampilkan di atas, Anda dapat ubah xmlns:wsdl agar mengarah ke URL yang valid:

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

Pesan Error

Penyimpanan proxy API melalui UI Apigee atau API akan gagal dengan pesan error ini:

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

Contoh Pesan Error

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

Contoh Screenshot Error

Pesan error nama RootElement tidak ditentukan.

Penyebab

Error ini terjadi jika elemen <Element> dalam kebijakan SOAPMessageValidation tidak berisi nama elemen {i>root<i}.

Diagnosis

  1. Mengidentifikasi nama kebijakan SOAPMessageValidation tempat error terjadi. Sebagai misalnya, dalam error berikut, nama kebijakan SOAPMessageValidation SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Periksa XML kebijakan SOAPMessageValidation yang gagal. Jika nama elemen root yang digunakan untuk validasi tidak ditentukan dalam elemen <Element>, maka itulah penyebab error.

    Misalnya, kebijakan berikut tidak menetapkan nama elemen root:

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

    Karena nama elemen root tidak ditentukan, deployment akan gagal dengan error yang ditunjukkan di atas.

Resolusi

Pastikan elemen <Element> dari kebijakan SOAPMessageValidation berisi elemen {i>root<i} yang benar.

Untuk memperbaiki kebijakan SOAPMessageValidation yang ditampilkan di atas, Anda dapat mengubah <Element> dan tambahkan elemen root yang valid seperti di bawah:

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

Pesan Error

Penyimpanan proxy API melalui UI Apigee atau API akan gagal dengan pesan error ini:

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

Contoh Pesan Error

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

Contoh Screenshot Error

Nama RootElement 1GetPriceResponse adalah pesan error yang tidak valid.

Penyebab

Error ini terjadi jika elemen <Element> dalam kebijakan SOAPMessageValidation berisi nama elemen root yang tidak mematuhi aturan XML untuk elemen yang valid penamaan.

Diagnosis

  1. Mengidentifikasi nama kebijakan SOAPMessageValidation tempat error terjadi. Misalnya, dalam error berikut, nama kebijakan SOAPMessageValidation adalah SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Periksa XML kebijakan SOAPMessageValidation yang gagal. Jika nama elemen root yang ditentukan dalam elemen <Element> tidak cocok dengan kriteria XML yang valid nama elemen, maka itulah penyebab {i>error<i}.

    Misalnya, kebijakan berikut memiliki nama elemen root yang dimulai dengan angka, yang tidak valid. Nama elemen yang berisi spasi juga akan menjadi tidak valid.

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

Resolusi

Pastikan elemen <Element> dari kebijakan SOAPMessageValidation berisi nama elemen {i>root<i} yang valid.

Untuk memperbaiki kebijakan SOAPMessageValidation yang ditampilkan di atas, Anda dapat mengubah <Element> untuk berisi nama elemen root yang valid, seperti yang ditunjukkan di bawah ini:

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

Pesan Error

Deployment proxy API melalui UI Apigee atau API gagal dengan pesan {i>error<i} ini:

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

Contoh Pesan Error

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

Contoh Screenshot Error

Resource tidak memiliki pesan error definisi elemen.

Penyebab

Error ini terjadi jika file resource ditentukan dalam elemen <Resource> kebijakan SOAPMessageValidation tidak memuat elemen apa pun yang dapat digunakan untuk validasi.

Diagnosis

  1. Identifikasi file resource yang tidak memiliki definisi elemen dari pesan error. Misalnya, dalam error berikut, file resource yang digunakan adalah xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Periksa file resource yang diidentifikasi di Langkah 1. Jika tidak ada elemen yang didefinisikan, maka itulah penyebab kesalahannya.

    Misalnya, file resource Script-1.xsd berikut tidak berisi elemen apa pun:

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

    Deployment akan gagal karena file resource tidak memiliki elemen apa pun dengan error yang ditampilkan di atas.

Resolusi

Pastikan file resource yang digunakan dalam kebijakan SOAPMessageValidation berisi definisi elemen yang relevan.

Untuk memperbaiki contoh file resource yang ditampilkan di atas, Anda dapat memodifikasi file xsd untuk menambahkan konten berikut:

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