Устранение ошибок развертывания политики проверки сообщений SOAP

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Инвалидресаурцетипе

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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.

Пример сообщения об ошибке

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.

Пример снимка экрана с ошибкой

Причина

Эта ошибка возникает, если для элемента <ResourceURL> в политике SOAPMessageValidation установлен тип ресурса, не поддерживаемый этой политикой. Поддерживаемые типы ресурсов: xsd и wsdl .

Диагностика

  1. Определите имя политики SOAPMessageValidation и недопустимый тип ресурса, используемый в элементе <ResourceURL> политики. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики SOAPMessageValidation — SOAP-Message-Validation-1 , а тип ресурса — 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. Проверьте неудачный XML-код политики SOAPMessageValidation. Если тип ресурса, указанный для элемента <ResourceURL> , соответствует недопустимому типу ресурса, указанному на шаге 1 выше, это и есть причина ошибки.

    Например, следующая политика определяет тип ресурса как py , что соответствует тому, что указано в сообщении об ошибке:

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

    Поскольку тип ресурса, используемый в <ResourceURL> , не является xsd или wsdl , развертывание завершится ошибкой, показанной выше.

Разрешение

Убедитесь, что тип ресурса, указанный в элементе <ResourceURL> политики SOAPMessageValidation, имеет значение xsd или wsdl и что файл ресурсов использует правильное форматирование.

Чтобы исправить пример политики SOAPMessageValidation, показанный выше, вы можете изменить тип ресурса на xsd или 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>

Ресурскомпилефалед

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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.

Пример сообщения об ошибке

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.

Пример снимка экрана с ошибкой

Причина

Эта ошибка возникает, если сценарий ресурса, указанный в элементе <ResourceURL> политики SOAPMessageValidation, содержит ошибку, которая препятствует его компиляции во время развертывания.

Диагностика

  1. Определите имя политики SOAPMessageValidation и сценарий ресурса, используемый в этой политике. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующей ошибке имя политики SOAPMessageValidation — SOAP-Message-Validation-1 , а сценарий ресурса — 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. Изучите неудачный XML-код политики SOAPMessageValidation и убедитесь, что сценарий ресурса, указанный для элемента <ResourceURL> , соответствует тому, что указано в сообщении об ошибке.

    Например, следующая политика определяет элемент <ResourceURL> как SOAP-Message-Validation-1.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>
    
  3. Просмотрите файл сценария ресурсов, указанный на шаге 1, и проверьте, нет ли потенциальных проблем, которые могут привести к ошибкам компиляции.

    Вот пример файла сценария ресурсов:

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

    Поскольку xmlns:wsdl указывает на недопустимый URL-адрес, развертывание завершится ошибкой, показанной выше.

Разрешение

Убедитесь, что сценарий ресурса, указанный в элементе <ResourceURL> политики SOAPMessageValidation, не имеет проблем, препятствующих его компиляции.

Чтобы исправить показанный выше сценарий SOAP-Message-Validation-1.wsdl , вы можете изменить xmlns:wsdl , чтобы он указывал на действительный 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>

RootElementNameНе указано

Сообщение об ошибке

При сохранении прокси-сервера API через пользовательский интерфейс Edge или API управления Edge возникает следующее сообщение об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Эта ошибка возникает, если элемент <Element> в политике SOAPMessageValidation не содержит имя корневого элемента.

Диагностика

  1. Определите имя политики SOAPMessageValidation, в которой произошла ошибка. Например, в следующей ошибке имя политики SOAPMessageValidation — SOAP-Message-Validation-1 :

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Проверьте неудачный XML-код политики SOAPMessageValidation. Если имя корневого элемента, используемое для проверки, не указано в элементе <Element> , это и есть причина ошибки.

    Например, следующая политика не указывает имя корневого элемента:

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

    Поскольку имя корневого элемента не указано, развертывание завершится ошибкой, показанной выше.

Разрешение

Убедитесь, что элемент <Element> политики SOAPMessageValidation содержит правильный корневой элемент.

Чтобы исправить политику SOAPMessageValidation, показанную выше, вы можете изменить <Element> и добавить действительный корневой элемент, как показано ниже:

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

Неверное имя корневого элемента

Сообщение об ошибке

При сохранении прокси-сервера API через пользовательский интерфейс Edge или API управления Edge возникает следующее сообщение об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Эта ошибка возникает, если элемент <Element> в политике SOAPMessageValidation содержит имя корневого элемента, которое не соответствует правилам XML для допустимого именования элементов.

Диагностика

  1. Определите имя политики SOAPMessageValidation, в которой произошла ошибка. Например, в следующей ошибке имя политики SOAPMessageValidation — SOAP-Message-Validation-1 :

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Проверьте неудачный XML-код политики SOAPMessageValidation. Если имя корневого элемента, указанное в элементе <Element> , не соответствует критериям допустимого имени элемента XML, это и есть причина ошибки.

    Например, в следующей политике имя корневого элемента начинается с недопустимой цифры. Имя элемента, содержащее пробелы, также будет недействительным.

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

Разрешение

Убедитесь, что элемент <Element> политики SOAPMessageValidation содержит допустимое имя корневого элемента.

Чтобы исправить политику SOAPMessageValidation, показанную выше, вы можете изменить элемент <Element> , чтобы он содержал допустимое имя корневого элемента, как показано ниже:

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

НетЭлементы

Сообщение об ошибке

Развертывание прокси-сервера API через пользовательский интерфейс Edge или API управления Edge завершается сбоем с этим сообщением об ошибке:

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

Пример сообщения об ошибке

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

Пример снимка экрана с ошибкой

Причина

Эта ошибка возникает, если файл ресурсов, указанный в элементе <Resource> политики SOAPMessageValidation, не содержит элементов, которые можно использовать для проверки.

Диагностика

  1. Определите определения отсутствующих элементов файла ресурсов из сообщения об ошибке. Например, в следующей ошибке используется файл ресурсов xsd://Script-1.xsd :

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Проверьте файл ресурсов, указанный на шаге 1. Если элементы не определены, это и есть причина ошибки.

    Например, следующий файл ресурсов Script-1.xsd не содержит никаких элементов:

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

    Поскольку файл ресурсов не содержит никаких элементов, развертывание завершится с ошибкой, показанной выше.

Разрешение

Убедитесь, что файл ресурсов, используемый в политике SOAPMessageValidation, содержит соответствующие определения элементов.

Чтобы исправить пример файла ресурсов, показанный выше, вы можете изменить файл xsd , добавив следующее содержимое:

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