Khắc phục sự cố khi triển khai chính sách Xác thực thông báo SOAP

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

InvalidResourceType

Thông báo Lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi này:

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.

Ví dụ về thông báo lỗi

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.

Ví dụ về ảnh chụp màn hình báo lỗi

Nguyên nhân

Lỗi này xảy ra nếu phần tử <ResourceURL> trong chính sách SOAPMessageValidation được đặt thành một loại tài nguyên không được chính sách này hỗ trợ. Các loại tài nguyên được hỗ trợ là xsdwsdl.

Chẩn đoán

  1. Xác định tên chính sách SOAPMessageValidation và loại tài nguyên không hợp lệ được sử dụng trong phần tử <ResourceURL> của chính sách. Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách SOAPMessageValidation là SOAP-Message-Validation-1 và loại tài nguyên là 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. Kiểm tra tệp XML chính sách SOAPMessageValidation (Xác thực SOAPMessageValidation) bị lỗi. Nếu loại tài nguyên được chỉ định cho phần tử <ResourceURL> khớp với loại tài nguyên không hợp lệ được xác định ở Bước 1 ở trên, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây chỉ định loại tài nguyên là py và khớp với nội dung trong thông báo lỗi:

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

    Vì loại tài nguyên dùng trong <ResourceURL> không phải là xsd hoặc wsdl, nên quá trình triển khai sẽ không thành công và lỗi sẽ xuất hiện như trên.

Độ phân giải

Đảm bảo rằng loại tài nguyên được chỉ định trong phần tử <ResourceURL> của chính sách SOAPMessageValidation được đặt thành xsd hoặc wsdl và tệp tài nguyên sử dụng định dạng chính xác.

Để sửa chính sách SOAPMessageValidation mẫu ở trên, bạn có thể sửa đổi loại tài nguyên thành xsd hoặc 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

Thông báo Lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi này:

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.

Ví dụ về thông báo lỗi

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.

Ví dụ về ảnh chụp màn hình báo lỗi

Nguyên nhân

Lỗi này xảy ra nếu tập lệnh tài nguyên được tham chiếu trong phần tử <ResourceURL> của chính sách SOAPMessageValidation chứa lỗi khiến tập lệnh không biên dịch được trong quá trình triển khai.

Chẩn đoán

  1. Xác định tên chính sách SOAPMessageValidation và tập lệnh tài nguyên được sử dụng trong chính sách. Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách SOAPMessageValidation là SOAP-Message-Validation-1 và tập lệnh tài nguyên là 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. Kiểm tra XML của chính sách SOAPMessageValidation (Xác thực tài nguyên) bị lỗi và xác minh rằng tập lệnh tài nguyên được chỉ định cho phần tử <ResourceURL> khớp với nội dung trong thông báo lỗi.

    Ví dụ: chính sách sau đây chỉ định phần tử <ResourceURL>SOAP-Message-Validation-1.wsdl, khớp với phần tử trong thông báo lỗi:

    <?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. Xem tệp tập lệnh tài nguyên được xác định trong Bước 1 và xem có vấn đề tiềm ẩn nào có thể dẫn đến lỗi biên dịch hay không.

    Dưới đây là tệp tập lệnh tài nguyên mẫu:

    <?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 trỏ đến một URL không hợp lệ, nên quá trình triển khai sẽ không thành công và lỗi sẽ xuất hiện như trên.

Độ phân giải

Đảm bảo rằng tập lệnh tài nguyên được chỉ định trong phần tử <ResourceURL> của chính sách SOAPMessageValidation không gặp vấn đề nào ngăn việc biên dịch.

Để sửa tập lệnh SOAP-Message-Validation-1.wsdl hiển thị ở trên, bạn có thể chỉnh sửa xmlns:wsdl để trỏ đến một URL hợp lệ:

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

Thông báo Lỗi

Không thể lưu proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi này:

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

Ví dụ về thông báo lỗi

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

Ví dụ về ảnh chụp màn hình báo lỗi

Nguyên nhân

Lỗi này xảy ra nếu phần tử <Element> trong chính sách SOAPMessageValidation không chứa tên của phần tử gốc.

Chẩn đoán

  1. Xác định tên chính sách SOAPMessageValidation nơi xảy ra lỗi. Ví dụ: trong lỗi sau, tên chính sách SOAPMessageValidation là SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Kiểm tra tệp XML chính sách SOAPMessageValidation (Xác thực SOAPMessageValidation) bị lỗi. Nếu tên phần tử gốc dùng để xác thực không được chỉ định trong phần tử <Element>, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây không chỉ định tên phần tử gốc:

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

    Vì bạn không chỉ định tên phần tử gốc nên quá trình triển khai sẽ không thành công và lỗi sẽ xuất hiện như trên.

Độ phân giải

Đảm bảo rằng phần tử <Element> của chính sách SOAPMessageValidation chứa phần tử gốc chính xác.

Để sửa chính sách SOAPMessageValidation hiển thị ở trên, bạn có thể sửa đổi <Element> và thêm một phần tử gốc hợp lệ như bên dưới:

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

Thông báo Lỗi

Không thể lưu proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi này:

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

Ví dụ về thông báo lỗi

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

Ví dụ về ảnh chụp màn hình báo lỗi

Nguyên nhân

Lỗi này xảy ra nếu phần tử <Element> trong chính sách SOAPMessageValidation chứa tên phần tử gốc không tuân thủ quy tắc XML để đặt tên phần tử hợp lệ.

Chẩn đoán

  1. Xác định tên chính sách SOAPMessageValidation nơi xảy ra lỗi. Ví dụ: trong lỗi sau, tên chính sách SOAPMessageValidation là SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Kiểm tra tệp XML chính sách SOAPMessageValidation không thành công. Nếu tên phần tử gốc được chỉ định trong phần tử <Element> không khớp với tiêu chí của tên phần tử XML hợp lệ, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây có tên phần tử gốc bắt đầu bằng số, không hợp lệ. Tên phần tử chứa khoảng trắng cũng không hợp lệ.

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

Độ phân giải

Đảm bảo rằng phần tử <Element> của chính sách SOAPMessageValidation (Xác thực SOAPMessageValidation) chứa tên thành phần gốc hợp lệ.

Để sửa chính sách SOAPMessageValidation hiển thị ở trên, bạn có thể sửa đổi phần tử <Element> để chứa tên phần tử gốc hợp lệ, như minh hoạ dưới đây:

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

Thông báo Lỗi

Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge với thông báo lỗi sau:

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

Ví dụ về thông báo lỗi

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

Ví dụ về ảnh chụp màn hình báo lỗi

Nguyên nhân

Lỗi này xảy ra nếu tệp tài nguyên được chỉ định trong phần tử <Resource> của chính sách SOAPMessageValidation không chứa bất kỳ phần tử nào có thể dùng để xác thực.

Chẩn đoán

  1. Xác định tệp tài nguyên bị thiếu định nghĩa phần tử trong thông báo lỗi. Ví dụ: trong lỗi sau, tệp tài nguyên được dùng trong là xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Kiểm tra tệp tài nguyên được xác định trong Bước 1. Nếu không có phần tử nào được xác định, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: tệp tài nguyên Script-1.xsd sau đây không chứa bất kỳ phần tử nào:

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

    Vì tệp tài nguyên không có phần tử nào nên quá trình triển khai sẽ không thành công với lỗi hiển thị ở trên.

Độ phân giải

Đảm bảo rằng tệp tài nguyên dùng trong chính sách SOAPMessageValidation (Xác thực SOAPMessageValidation) chứa các định nghĩa của các phần tử có liên quan.

Để sửa tệp tài nguyên mẫu ở trên, bạn có thể sửa đổi tệp xsd để thêm nội dung sau:

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