عیب یابی خطای استقرار خط مشی حفاظت از بیان منظم

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

InvalidRegularExpression

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Deploying Revision revision_number to environment
RegularExpressionProtection policy_name: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

نمونه پیام خطا

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

نمونه خطا از صفحه نمایش

متن خطای InvalidRegularExpression

علت

اگر عبارت منظم در عنصر <Pattern> خط مشی RegularExpressionProtection معتبر نباشد، استقرار پروکسی API ناموفق است.

تشخیص

  1. نام خط مشی RegularExpressionProtection را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام خط مشی RegularExpressionProtection Regular-Expression-Protection-1:

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Invalid Regular Expression com.apigee.steps.regexprotection.RegularExpressionProtectionBean$RegexPattern@f4ecb23, Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
    
  2. تمام عناصر <Pattern> را در خط مشی محافظت از بیان منظم XML بررسی کنید. بررسی کنید که آیا هر یک از عناصر <Pattern> دارای عبارت منظم نامعتبر است. اگر هر یک از عناصر <Pattern> دارای عبارت منظم نامعتبر باشد، دلیل این خطا است.

    به عنوان مثال، خط مشی زیر مقدار Pattern> of foo){2} را مشخص می کند که عبارت Invalid Regular در نظر گرفته می شود:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <URIPath>
                <Pattern>foo){2}</Pattern>
            </URIPath>
            <Source>request</Source>
        </RegularExpressionProtection>
    

    در مثال بالا، عبارت منظم مشخص شده در <Pattern> دارای یک پرانتز باز است. از این رو به عنوان یک عبارت منظم نامعتبر در نظر گرفته می شود. بنابراین استقرار API Proxy با شکست مواجه می شود.

قطعنامه

اطمینان حاصل کنید که هر عنصر <Pattern> در خط مشی RegularExpressionProtection حاوی یک عبارت منظم معتبر باشد. شما می توانید ابزارهای مختلف regex آنلاین یا آفلاین را برای اشکال زدایی عبارات منظم خود جستجو کنید. برای تصحیح مثال خط مشی حفاظت از بیان منظم نشان داده شده در بالا، پرانتزهای از دست رفته را اضافه کنید:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
        <DisplayName>Regular Expression Protection-1</DisplayName>
        <Properties/>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <URIPath>
            <Pattern>(foo){2}</Pattern>
        </URIPath>
        <Source>request</Source>
    </RegularExpressionProtection>

XPathCompilation Failed

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Deploying Revision revision_number to environment
RegularExpressionProtection policy_name: Failed to compile xpath xpath_expression. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

نمونه پیام خطا

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

نمونه خطا از صفحه نمایش

متن خطای XPathCompilationFailed

علت

اگر پیشوند یا مقدار مورد استفاده در عنصر <XPath> بخشی از هیچ یک از فضاهای نام اعلام شده در خط مشی RegularExpressionProtection نباشد، در آن صورت استقرار پراکسی API با شکست مواجه می شود.

می توانید اطلاعات بیشتری درباره فضاهای نام، XPath و پیشوند در XML Namespaces و نحوه تأثیر آنها بر XPath و XSLT بیابید.

تشخیص

  1. نام خط مشی RegularExpressionProtection که در آن خطا رخ داده و XPath Expression استفاده شده را مشخص کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید.

    به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1 و عبارت XPath /notapigee:foo/notapigee:bar:

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile xpath /notapigee:foo/notapigee:bar. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
    
  2. در XML خط مشی حفاظت از بیان منظم ناموفق، بررسی کنید که XPath تنظیم شده در عنصر Expression با XPath مشخص شده در پیام خطا مطابقت دارد (مرحله شماره 1 در بالا).

    به عنوان مثال، خط مشی زیر XPath را به عنوان /notapigee:foo/notapigee:bar مشخص می کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
        <DisplayName>Regular Expression Protection-1</DisplayName>
        <Properties/>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Source>request</Source>
         <XMLPayload>
             <Namespaces>
                 <Namespace prefix="apigee">http://www.apigee.com</Namespace>
             </Namespaces>
             <XPath>
                 <Expression>/notapigee:foo/notapigee:bar</Expression>
                 <Type>nodeset</Type>
                 <Pattern>pattern</Pattern>
                 <Pattern>pattern2</Pattern>
             </XPath>
         </XMLPayload>
    </RegularExpressionProtection>
    
  3. عناصر <Namespaces> و <Expression> را در خط مشی RegularExpressionProtection بررسی کنید. اگر <Expression> خاصی که در پیام خطا نشان داده شده است از پیشوند یا مقداری استفاده می کند که بخشی از فضای نامی اعلام شده در خط مشی RegularExpressionProtection نیست، آنگاه این دلیل خطا است.

    توجه داشته باشید که <XPath> خاص از پیشوند notapigee در خط مشی RegularExpressionProtection مثال استفاده می کند:

    <Expression>/notapigee:foo/notapigee:bar</Expression>

    با این حال، پیشوند notapigee در هیچ یک از عناصر <Namespace> تعریف نشده است. بنابراین، کامپایل <XPath> با شکست مواجه می شود که منجر به شکست استقرار می شود.

قطعنامه

اطمینان حاصل کنید که تمام فضاهای نامی که در عناصر <Expression> در زیر عناصر <XPath> استفاده می شوند، در خط مشی RegularExpressionProtection اعلان شده اند. برای اصلاح مثال بالا، می توانید پیشوند notapigee به apigee جایگزین کنید، که در فضاهای نام اعلان شده است:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
     <XMLPayload>
         <Namespaces>
             <Namespace prefix="apigee">http://www.apigee.com</Namespace>
         </Namespaces>
         <XPath>
             <Expression>/apigee:foo/apigee:bar</Expression>
             <Type>nodeset</Type>
             <Pattern>pattern</Pattern>
             <Pattern>pattern2</Pattern>
         </XPath>
     </XMLPayload>
</RegularExpressionProtection>

CannotBeConvertedToNodeset

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Deploying Revision revision_number to environment
RegularExpressionProtection policy_name: Result of xpath xpath_expression cannot be converted to nodeset. Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

نمونه پیام خطا

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

نمونه خطا از صفحه نمایش

متن خطای CannotBeConvertedToNodeset

علت

اگر خط مشی بیان منظم یک عبارت <XPath> داشته باشد که در آن عنصر <Type> به عنوان nodeset تعریف شده باشد، اما عبارت را نتوان به nodeset تبدیل کرد، در این صورت استقرار پراکسی API با شکست مواجه می شود.

تشخیص

  1. خط مشی RegularExpressionProtection را که در آن خطا رخ داده و XPath Expression را که نمی توان به nodeset تبدیل کرد، شناسایی کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید.

    به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1 و عبارت XPath count(//apigee:foo):

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Result of xpath count(//apigee:foo) cannot be converted to nodeset. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
    
  2. در XML خط مشی حفاظت از بیان منظم ناموفق، بررسی کنید که XPath تنظیم شده در عنصر <Expression> عنصر <XPath> با XPath مشخص شده در پیام خطا مطابقت دارد (مرحله شماره 1 در بالا).

    به عنوان مثال، خط مشی زیر به عنوان count(//apigee:foo) را مشخص می کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <Source>request</Source>
             <XMLPayload>
                 <Namespaces>
                     <Namespace prefix="apigee">http://www.apigee.com</Namespace>
                 </Namespaces>
                 <XPath>
                     <Expression>count(//apigee:foo)</Expression>
                     <Type>nodeset</Type>
                     <Pattern>pattern</Pattern>
                     <Pattern>pattern2</Pattern>
                 </XPath>
             </XMLPayload>
        </RegularExpressionProtection>
    
  3. مقدار تنظیم شده در عنصر <Type> در زیر عنصر <XPath> بررسی کنید. اگر عنصر <Type> به nodeset شده باشد، این دلیل خطا است.

    در این مثال، عبارت XPath count() است که یک یا چند گره را بر نمی گرداند. بنابراین، استقرار پروکسی API با شکست مواجه می شود.

قطعنامه

اگر عنصر <Type> روی nodeset تنظیم شده است، مطمئن شوید که نتیجه عنصر <Expression> تنظیم شده در <XPath> یک یا چند گره باشد. همچنین، عنصر <Type> را به مقدار مناسب تری بر اساس مورد استفاده خود تغییر دهید.

برای اصلاح مثال بالا، می توانید عنصر <Expression> را به مقدار دیگری تغییر دهید که می تواند گره ها را برگرداند:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
     <XMLPayload>
         <Namespaces>
             <Namespace prefix="apigee">http://www.apigee.com</Namespace>
         </Namespaces>
         <XPath>
             <Expression>/apigee:foo/apigee:bar</Expression>
             <Type>nodeset</Type>
             <Pattern>pattern</Pattern>
             <Pattern>pattern2</Pattern>
         </XPath>
     </XMLPayload>
</RegularExpressionProtection>

JSONPathCompilation ناموفق بود

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Deploying Revision revision_number to environment
RegularExpressionProtection policy_name: Failed to compile jsonpath jsonpath_expression Context Revision:revision_number;APIProxy:RegexThreat;Organization:organization;Environment:environment.

نمونه پیام خطا

Error Deploying Revision 1 to test
RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.

نمونه خطا از صفحه نمایش

متن خطای JSONPathCompilation Failed

علت

اگر عنصر <Expression> در عنصر <JSONPath> یک خط‌مشی حفاظت از بیان معمولی روی یک عبارت JSONPath نامعتبر تنظیم شود، در آن صورت استقرار پراکسی API با شکست مواجه می‌شود.

تشخیص

  1. نام خط مشی RegularExpressionProtection را که در آن خطا رخ داده و از JSONPath Expression نامعتبر استفاده شده است، شناسایی کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید.

    به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1 و عبارت JSONPath $.store.book[*.author:

    Error Deploying Revision 1 to test
    RegularExpressionProtection Regular-Expression-Protection-1: Failed to compile jsonpath $.store.book[*.author. Context Revision:1;APIProxy:RegexThreat;Organization:myorg;Environment:test.
    
  2. در خط مشی حفاظت از بیان منظم XML ناموفق، بررسی کنید که JSONPath تنظیم شده در عنصر Expression با JSONPath مشخص شده در پیام خطا مطابقت دارد (مرحله شماره 1 در بالا).

    به عنوان مثال، خط مشی زیر عنصر Expression را در عنصر <JSONPath> به عنوان $.store.book[*.author تعیین می کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <Source>request</Source>
            <JSONPayload>
                 <JSONPath>
                     <Expression>$.store.book[*.author</Expression>
                     <Pattern>REGEX PATTERN</Pattern>
                     <Pattern>REGEX PATTERN</Pattern>
                 </JSONPath>
                </JSONPayload>
        </RegularExpressionProtection>
    
  3. عنصر <Expression> را در زیر عنصر <JSONPath> در خط‌مشی بررسی کنید. اگر با نحو JSONPath مطابقت نداشته باشد، این دلیل خطا است. در مثال بالا، براکت بسته شدنی وجود ندارد که عبارت را نامعتبر می کند.

    از آنجایی که بیان مسیر JSON نامعتبر است، استقرار پروکسی API ناموفق است.

قطعنامه

مطمئن شوید که مقدار عنصر <Expression> داخل عنصر <JSONPath> در خط‌مشی Regular Expression Protection یک عبارت JSONPath معتبر است.

برای تصحیح مثالی که در بالا نشان داده شده است، می توانید براکت بسته شدن گمشده را به مقدار عنصر <Expression> اضافه کنید:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
    <JSONPayload>
         <JSONPath>
             <Expression>$.store.book[*].author</Expression>
             <Pattern>REGEX PATTERN</Pattern>
             <Pattern>REGEX PATTERN</Pattern>
         </JSONPath>
        </JSONPayload>
</RegularExpressionProtection>

NothingToEnforce

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

نمونه پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

نمونه خطا از صفحه نمایش

متن خطای NothingToEnforce

علت

اگر خط‌مشی RegularExpressionProtection هیچ یک از عناصر <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> یا <JSONPayload> را نداشته باشد، استقرار پروکسی API با شکست مواجه می‌شود.

همانطور که در پیام خطا نشان داده شده است، خط‌مشی RegularExpressionProtection باید حداقل یکی از این عناصر را در این خط‌مشی گنجانده باشد: <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> ، یا <JSONPayload> .

تشخیص

  1. نام خط مشی RegularExpressionProtection را که در آن خطا رخ داده است، شناسایی کنید. می توانید آن را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1:

    RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
    
  2. خط مشی ناموفق حفاظت از بیان منظم (که در مرحله شماره 1 در بالا مشخص شده است) را بررسی کنید. اگر خط‌مشی حتی یکی از عناصر زیر را نداشته باشد: <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> ، یا <JSONPayload> ، آن‌گاه این دلیل خطا است.

    به عنوان مثال، خط مشی Regular Expression Protection زیر هیچ یک از عناصر ذکر شده در بالا را ندارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
            <DisplayName>Regular Expression Protection-1</DisplayName>
            <Properties/>
            <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
            <Source>request</Source>
        </RegularExpressionProtection>
    

    از آنجایی که هیچ یک از عناصر اجباری در خط مشی Extract Variables وجود ندارد، استقرار پراکسی API با شکست مواجه می شود.

قطعنامه

مطمئن شوید که خط‌مشی RegularExpressionProtection حداقل یکی از این عناصر اجباری را داشته باشد: <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> ، یا <JSONPayload> . به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
    <DisplayName>Regular Expression Protection-1</DisplayName>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Source>request</Source>
    <JSONPayload>
        <JSONPath>
            <Expression>$.store.book[*].author</Expression>
            <Pattern>REGEX PATTERN</Pattern>
            <Pattern>REGEX PATTERN</Pattern>
        </JSONPath>
    </JSONPayload>
</RegularExpressionProtection>

NoPatternsToEnforce

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: No patterns to enforce in payload_name.

نمونه پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.

نمونه خطا از صفحه نمایش

متن خطای NoPatternsToEnforce

علت

اگر هر یک از عناصر سطح بالا ( <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> ، یا <JSONPayload> ) عنصر <Pattern> را در خط‌مشی RegularExpressionProtection تعریف نشده باشد، توسعه پروکسی API از کار می افتد.

تشخیص

  1. نام خط مشی RegularExpressionProtection را که در آن خطا رخ داده است و عنصر فرزند که عنصر <Pattern> را ندارد، شناسایی کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید.

    به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1 و عنصر فرزند XPath:

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
    
  2. خط مشی Regular Expression Protection ناموفق را بررسی کنید و بررسی کنید که آیا عنصر فرزند شناسایی شده در مرحله #1 عنصر <Pattern> را ندارد. اگر عنصر <Pattern> در آن وجود نداشته باشد، دلیل این خطا است.

    به عنوان مثال، خط مشی زیر عنصر <Pattern> را در داخل <XPath> ندارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <XMLPayload>
            <Namespaces>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
            </Namespaces>
            <XPath>
              <Expression>/apigee:Greeting/apigee:User</Expression>
              <Type>string</Type>
            </XPath>
          </XMLPayload>
        </RegularExpressionProtection>
    

    از آنجایی که عنصر <XPath> عنصر <Pattern> را ندارد، استقرار پروکسی API با شکست مواجه می‌شود.

قطعنامه

مطمئن شوید که هر یک از عناصر <URIPath> ، <QueryParam> ، <Header> ، <FormParam> ، <XMLPayload> یا <JSONPayload> حداقل یک <Pattern> مشخص شده باشد. برای اطلاع از نحوه تعیین صحیح عنصر، به خط مشی RegularExpressionProtection مراجعه کنید.

برای اصلاح مثال بالا، فقط می‌توانیم عنصر <Pattern> را به عنصر <XPath> در زیر <XMLPayload> اضافه کنیم:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
    </Namespaces>
    <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
    </XPath>
  </XMLPayload>
</RegularExpressionProtection>

NONEmptyPrefixMappedToEmptyURI

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Non-empty prefix prefix_name cannot be mapped to empty uri.

نمونه پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.

نمونه خطا از صفحه نمایش

متن خطای NONEmptyPrefixMappedToEmptyURI

علت

اگر خط مشی RegularExpressionProtection دارای پیشوندی باشد که در عنصر <Namespace> در زیر عنصر <XMLPayload> تعریف شده باشد، اما هیچ URI تعریف نشده باشد، این خطا رخ می دهد.

تشخیص

  1. خط مشی RegularExpressionProtection را که در آن خطا رخ داده است و نام پیشوندی که به URI نگاشت نشده است را شناسایی کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید.

    به عنوان مثال، در خطای زیر، نام خط مشی Regular Expression Protection-1 و پیشوند آن apigee است:

    RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. در خط مشی محافظت از بیان منظم XML ناموفق، بررسی کنید که نام پیشوند تنظیم شده در عنصر <Namespace> در زیر عنصر <XMLPayload> با نام پیشوند مشخص شده در پیام خطا مطابقت داشته باشد (مرحله شماره 1 در بالا).

    به عنوان مثال، سیاست زیر پیشوندی به نام apigee را در عنصر <Namespace> مشخص می‌کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <XMLPayload>
            <Namespaces>
              <Namespace prefix="apigee"/>
              <Namespace prefix="gmail">http://mail.google.com</Namespace>
            </Namespaces>
            <XPath>
              <Expression>/apigee:Greeting/apigee:User</Expression>
              <Type>string</Type>
              <Pattern>REGEX PATTERN</Pattern>
            </XPath>
          </XMLPayload>
        </RegularExpressionProtection>
    
  3. اگر عنصر <Namespace> با پیشوند خاص مشخص شده در مرحله #2 دارای یک URI معتبر باشد، اعتبارسنجی کنید. اگر URI گم شده باشد، این دلیل خطا است.

    در مثالی که در بالا نشان داده شده است، خط مشی حفاظت از بیان منظم، توجه کنید که هیچ URI مربوط به عنصر <Namespace> با پیشوند apigee وجود ندارد. بنابراین، با خطای زیر مواجه می شوید:

    Non-empty prefix apigee cannot be mapped to empty uri.

قطعنامه

اطمینان حاصل کنید که همه عناصر <Namespace> تعریف شده با یک پیشوند دارای یک URI متناظر در خط مشی Extract Variables هستند. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
      <Namespace prefix="gmail">http://mail.google.com</Namespace>
    </Namespaces>
    <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
    </XPath>
  </XMLPayload>
</RegularExpressionProtection>

DuplicatePrefix

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Duplicate prefix prefix_name.

نمونه پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.

نمونه خطا از صفحه نمایش

متن خطای DuplicatePrefix

علت

این خطا در صورتی رخ می دهد که خط مشی RegularExpressionProtection دارای پیشوند یکسان باشد که بیش از یک بار در عنصر <Namespace> زیر عنصر <XMLPayload> تعریف شده باشد.

به عنوان مثال، این خطا از آنجایی رخ می دهد که پیشوند apigee دو بار مطابق شکل زیر تعریف شده است:

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>

تشخیص

  1. خط مشی RegularExpressionProtection را که در آن خطا رخ داده است و نام پیشوند را مشخص کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید.

    به عنوان مثال، در خطای زیر، نام خط مشی Regular Expression Protection-1 و پیشوند آن apigee است:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
    
  2. در خط مشی محافظت از بیان منظم XML ناموفق، بررسی کنید که نام پیشوند تنظیم شده در عنصر <Namespace> در زیر عنصر <XMLPayload> با نام پیشوند مشخص شده در پیام خطا مطابقت داشته باشد (مرحله شماره 1 در بالا).

    به عنوان مثال، سیاست زیر پیشوندی به نام apigee را در عنصر <Namespace> مشخص می‌کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <XMLPayload>
            <Namespaces>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
            </Namespaces>
            <XPath>
              <Expression>/apigee:Greeting/apigee:User</Expression>
              <Type>string</Type>
              <Pattern>REGEX PATTERN</Pattern>
            </XPath>
          </XMLPayload>
        </RegularExpressionProtection>
    
  3. تعیین کنید که آیا عنصر <Namespace> با پیشوند خاص، شناسایی شده در مرحله #2 بیش از یک بار تعریف شده است یا خیر. اگر بیش از یک بار تعریف شده باشد، دلیل خطا همین است.

    در مثال خط مشی حفاظت از بیان منظم که در بالا نشان داده شده است، توجه کنید که عنصر <Namespace> با پیشوند apigee دو بار تعریف شده است. بنابراین، با خطای زیر مواجه می شوید:

    Duplicate prefix apigee.
    

قطعنامه

اطمینان حاصل کنید که فقط یک تعریف برای هر پیشوند در عناصر <Namespace> در خط مشی RegularExpressionProtection وجود دارد. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
      <DisplayName>Regular Expression Protection-1</DisplayName>
      <Properties/>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <Source>request</Source>
      <XMLPayload>
        <Namespaces>
          <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        </Namespaces>
        <XPath>
          <Expression>/apigee:Greeting/apigee:User</Expression>
          <Type>string</Type>
          <Pattern>REGEX PATTERN</Pattern>
        </XPath>
      </XMLPayload>
    </RegularExpressionProtection>

EmptyXPathExpression

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty XPath expression.

نمونه پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.

نمونه خطا از صفحه نمایش

متن خطای EmptyXPathExpression

علت

اگر خط مشی RegularExpressionProtection عنصر <Expression> را در عنصر <XPath> تنظیم نکرده باشد، در آن صورت استقرار پراکسی API با شکست مواجه می شود.

تشخیص

  1. خط مشی محافظت از بیان منظم شکست خورده را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1 است:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
    
  2. در خط مشی حفاظت از بیان منظم XML ناموفق، تعیین کنید که آیا عنصر <XMLPayload> با عنصر فرزند <XPath> وجود دارد که هیچ عنصر <Expression> در آن تعریف نشده است یا عنصر <Expression> روی هیچ مقداری تنظیم نشده است. اگر چنین است، پس علت خطا همین است.

    به عنوان مثال، در اینجا یک خط مشی حفاظت از بیان منظم است که دارای عنصر <XMLPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
      <DisplayName>Regular Expression Protection-1</DisplayName>
      <Properties/>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <Source>request</Source>
      <XMLPayload>
        <Namespaces>
          <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        </Namespaces>
        <XPath>
          <Expression></Expression>
          <Type>string</Type>
          <Pattern>REGEX PATTERN</Pattern>
        </XPath>
      </XMLPayload>
    </RegularExpressionProtection>
    

    از آنجایی که یک عنصر <Expression> خالی در عنصر <XPath> وجود دارد، استقرار پروکسی API با شکست مواجه می شود.

قطعنامه

مطمئن شوید که خط مشی RegularExpressionProtection دارای عنصر <Expression> غیر خالی و معتبر است که در عنصر <XPath> تعریف شده است. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
    </Namespaces>
    <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
    </XPath>
  </XMLPayload>
</RegularExpressionProtection>

EmptyJSONPathExpression

پیغام خطا

استقرار پراکسی API از طریق Edge UI یا Edge management API با این پیام خطا انجام نمی شود:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty JSONPath expression.

نمونه پیام خطا

Error Saving Revision 1
RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.

نمونه خطا از صفحه نمایش

متن خطای EmptyJSONPathExpression

علت

اگر خط‌مشی RegularExpressionProtection عنصر <Expression> را در عنصر <JSONPath> تنظیم نکرده باشد، در آن صورت استقرار پراکسی API با شکست مواجه می‌شود.

تشخیص

  1. خط مشی محافظت از بیان منظم شکست خورده را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام خط مشی Regular-Expression-Protection-1 است:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
    
  2. در XML خط مشی حفاظت از بیان منظم ناموفق، تعیین کنید که آیا عنصر <JSONPayload> با عنصر فرزند <JSONPath> وجود دارد که عنصر <Expression> در آن تعریف نشده باشد یا عنصر <Expression> روی هیچ مقداری تنظیم نشده باشد. اگر چنین است، پس علت خطا همین است.

    به عنوان مثال، در اینجا یک خط مشی حفاظت از بیان منظم است که دارای عنصر <JSONPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
          <DisplayName>Regular Expression Protection-1</DisplayName>
          <Properties/>
          <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
          <Source>request</Source>
          <JSONPayload>
            <JSONPath>
              <Expression></Expression>
              <Pattern>REGEX PATTERN</Pattern>
              <Pattern>REGEX PATTERN</Pattern>
            </JSONPath>
          </JSONPayload>
        </RegularExpressionProtection>
    

    از آنجایی که یک عنصر <Expression> خالی در عنصر <JSONPath> وجود دارد، استقرار پروکسی API با شکست مواجه می شود.

قطعنامه

مطمئن شوید که خط مشی RegularExpressionProtection دارای عنصر <Expression> غیر خالی و معتبر است که در عنصر <JSONPath> تعریف شده است. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
  <DisplayName>Regular Expression Protection-1</DisplayName>
  <Properties/>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Source>request</Source>
  <JSONPayload>
    <JSONPath>
      <Expression>$.store.book[*].author</Expression>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
    </JSONPath>
  </JSONPayload>
</RegularExpressionProtection>