عیب یابی خطای استقرار خط مشی اعتبارسنجی پیام SOAP

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

نوع منبع نامعتبر

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت 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 یا رابط مدیریت 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>

نام عنصر ریشهنامشخص

پیام خطا

ذخیره پروکسی API از طریق رابط کاربری Edge یا رابط مدیریت 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 یا رابط مدیریت 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 یا رابط مدیریت 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. فایل منبع شناسایی شده در مرحله ۱ را بررسی کنید. اگر هیچ عنصری تعریف نشده باشد، علت خطا همین است.

    برای مثال، فایل منبع زیر 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>