عیب یابی خطای استقرار خط مشی متغیرها را استخراج کنید

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

NothingToExtract

پیغام خطا

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

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

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

Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

نمونه اسکرین شات

علت

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

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

تشخیص

سیاست Extract Variables نامگذاری شده در پیام خطا را بررسی کنید. اگر این خط‌مشی حتی یکی از عناصر زیر را نداشته باشد: URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload ، آنگاه دلیل این خطا است. برای مثال، سیاست Extract Variables زیر هیچ یک از عناصر ذکر شده در بالا را ندارد:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Properties/>
</ExtractVariables>

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

قطعنامه

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
  <DisplayName>EV-XML-Age</DisplayName>
  <Properties/>
  <Source>request</Source>
  <XMLPayload>
    <Namespaces/>
      <Variable name="age" type="integer">
          <XPath>/age</XPath>
      </Variable>
  </XMLPayload>
</ExtractVariables>

NONEmptyPrefixMappedToEmptyURI

پیغام خطا

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

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

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

Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.

نمونه اسکرین شات

علت

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

تشخیص

  1. خط مشی Extract Variables را که در آن خطا رخ داده و نام پیشوند را مشخص کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام خط مشی EV-XML-Age و پیشوند apigee است:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. در XML خط مشی Extract Variables ناموفق، بررسی کنید که نام پیشوند تنظیم شده در عنصر <Namespace> در زیر عنصر <XMLPayload> با نام پیشوند مشخص شده در پیام خطا مطابقت داشته باشد (مرحله شماره 1 در بالا). به عنوان مثال، سیاست زیر پیشوندی به نام apigee را در عنصر <Namespace> مشخص می‌کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
            <Namespace prefix="apigee"></Namespace>
            <Namespace prefix="gmail">http://mail.google.com</Namespace>
          </Namespaces>
        <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    
  3. اگر عنصر <Namespace> با پیشوند خاص مشخص شده در مرحله #2 دارای یک URI معتبر باشد، اعتبارسنجی کنید. اگر URI گم شده باشد، این دلیل خطا است.

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

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
    

قطعنامه

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Source clearPayload="false">request</Source>
    <XMLPayload stopPayloadProcessing="false">
    <Namespaces>
        <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        <Namespace prefix="gmail">http://mail.google.com</Namespace>
     </Namespaces>
    <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
    </Variable>
    </XMLPayload>
</ExtractVariables>

DuplicatePrefix

پیغام خطا

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

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Duplicate prefix [prefix_name].

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

Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.

نمونه اسکرین شات

علت

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

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

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

تشخیص

  1. خط مشی Extract Variables را که در آن خطا رخ داده و نام پیشوند را مشخص کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام خط مشی EV-XML-Age و پیشوند apigee است:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. در XML خط مشی Extract Variables ناموفق، بررسی کنید که نام پیشوند تنظیم شده در عنصر <Namespace> در زیر عنصر <XMLPayload> با نام پیشوند مشخص شده در پیام خطا مطابقت داشته باشد (مرحله شماره 1 در بالا). به عنوان مثال، سیاست زیر پیشوندی به نام apigee را در عنصر <Namespace> مشخص می‌کند که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
              <Namespace prefix="gmail">http://mail.google.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
          </Namespaces>
          <Variable name="legName" type="string
              <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
          </Variable>
        </XMLPayload>
      </ExtractVariables>
    
  3. تعیین کنید که آیا عنصر <Namespace> با پیشوند خاص، شناسایی شده در مرحله #2 بیش از یک بار تعریف شده است یا خیر. اگر بیش از یک بار تعریف شده باشد، دلیل خطا همین است.

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

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

قطعنامه

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Source clearPayload="false">request</Source>
    <XMLPayload stopPayloadProcessing="false">
      <Namespaces>
          <Namespace prefix="apigee">http://www.apigee.com</Namespace>
          <Namespace prefix="gmail">http://mail.google.com</Namespace>
      </Namespaces>
      <Variable name="legName" type="string">
          <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
      </Variable>
    </XMLPayload>
</ExtractVariables>

NoXPathsToEvaluate

پیغام خطا

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

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no xpaths to evaluate in variable name.

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

Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.

نمونه اسکرین شات

علت

اگر سیاست Extract Variables عنصر <XPath> را در عنصر <XMLPayload> نداشته باشد، در این صورت استقرار پراکسی API با خطای نشان داده شده در بالا با شکست مواجه می‌شود.

تشخیص

  1. خط مشی شکست خورده Extract Variables را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. در XML خط مشی Extract Variables ناموفق، بررسی کنید که آیا عنصر <XMLPayload> بدون عنصر فرزند <XPath> وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

    به عنوان مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای عنصر <XMLPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="HostReachable" type="boolean">
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

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

قطعنامه

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="HostReachable" type="boolean">
            <XPath>/isReachable</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

EmptyXPathExpression

پیغام خطا

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

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: XPath expression is empty in variable name.

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

Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.

نمونه اسکرین شات

علت

اگر سیاست Extract Variables یک عبارت <XPath> خالی در عنصر <XMLPayload> داشته باشد، در آن صورت استقرار پراکسی API با شکست مواجه می‌شود.

تشخیص

  1. خط مشی شکست خورده Extract Variables را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. در XML خط مشی Extract Variables ناموفق، تعیین کنید که آیا عنصر <XMLPayload> با عنصر فرزند <XPath> خالی وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

    به عنوان مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای عنصر <XMLPayload> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="address" type="string">
                <XPath></XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

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

قطعنامه

اطمینان حاصل کنید که خط مشی Extract Variables دارای عنصر <XPath> غیر خالی و معتبر است که در عنصر <XMLPayload> تعریف شده است. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="address" type="string">
            <XPath>/address</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

NoJSONPathsToEvaluate

پیغام خطا

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

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.

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

Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.

نمونه اسکرین شات

علت

اگر سیاست Extract Variables عنصر <JSONPath> را در عنصر <JSONPayload> نداشته باشد، در این صورت استقرار پراکسی API با خطای نشان داده شده در بالا با شکست مواجه می‌شود.

تشخیص

  1. خط مشی شکست خورده Extract Variables را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. در XML خط مشی Extract Variables ناموفق، تعیین کنید که آیا عنصر <JSONPayload> بدون عنصر فرزند <JSONPath> وجود دارد یا خیر. اگر چنین است، پس علت خطا همین است.

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

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <JSONPayload>
            <Variable name="title">
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
    </ExtractVariables>
    

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

قطعنامه

مطمئن شوید که خط مشی Extract Variables دارای یک عنصر <JSONPath> است که در زیر عنصر <JSONPayload> تعریف شده است. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <JSONPayload>
        <Variable name="title">
            <JSONPath>$.book.title</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

EmptyJSONPathExpression

پیغام خطا

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

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: JSONPath expression is empty in variable name.

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

Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.

نمونه اسکرین شات

علت

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

تشخیص

  1. خط مشی شکست خورده Extract Variables را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 است:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. در XML خط مشی Extract Variables ناموفق، بررسی کنید که آیا عنصر <JSONPayload> با عنصر فرزند <JSONPath> خالی وجود دارد. اگر چنین است، پس علت خطا همین است.

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

        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <JSONPayload>
                <Variable name="account_number" type="integer">
                    <JSONPath></JSONPath>
                </Variable>
            </JSONPayload>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
        </ExtractVariables>
    

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

قطعنامه

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

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <JSONPayload>
        <Variable name="account_number" type="integer">
           <JSONPath>$.account.number</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

MissingName

پیغام خطا

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

Error Saving Revision [revision_number]
Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]

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

Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable

نمونه اسکرین شات

علت

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

به عنوان مثال، اگر ویژگی name در یک عنصر Variable وجود نداشته باشد، این خطا رخ می دهد.

تشخیص

  1. نام خط مشی Extract Variables را که در آن خطا رخ داده است و عنصری که ویژگی name در آن وجود ندارد، شناسایی کنید. شما می توانید این موارد را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 و نام عنصر Variable است:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. در XML خط مشی Extract Variables ناموفق، بررسی کنید که همه عناصر با نام تعیین شده از مرحله شماره 1 در بالا دارای یک ویژگی name باشند. اگر عنصری وجود داشته باشد که مشخصه name در آن وجود نداشته باشد، آنگاه این دلیل خطا است.

    برای مثال، سیاست Extract Variables زیر دارای عنصر <Variable> تعریف شده است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Variable type="boolean">
            <Pattern>{isAccountActive}</Pattern>
        </Variable>
    </ExtractVariables>
    

    توجه داشته باشید که ویژگی name در عنصر Variable وجود ندارد، بنابراین استقرار API Proxy با شکست مواجه می‌شود.

قطعنامه

اطمینان حاصل کنید که سیاست Extract Variables حاوی ویژگی name مورد نیاز، برای عناصر QueryParam ، Header ، FormParam یا Variable باشد. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Variable name="account_active" type="boolean">
        <Pattern>{isAccountActive}</Pattern>
    </Variable>
</ExtractVariables>

PatternWithoutVariable

پیغام خطا

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

Error Saving Revision [revision_number]
Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]

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

Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.

نمونه اسکرین شات

علت

اگر سیاست Extract Variables دارای متغیر مشخص شده در عنصر <Pattern> نباشد، استقرار پروکسی API با شکست مواجه می‌شود. عنصر <Pattern> به نام متغیری نیاز دارد که داده های استخراج شده در آن ذخیره می شود.

تشخیص

  1. نام خط مشی Extract Variables را که در آن خطا رخ داده است و الگویی که متغیر برای آن وجود ندارد، مشخص کنید. می توانید این موارد را از پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 و نام عنصر /a/b است:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. در خط مشی XML Extract Variables ناموفق، بررسی کنید که الگوی تنظیم شده در عنصر <Pattern> با الگوی مشخص شده در پیام خطا مطابقت داشته باشد (مرحله شماره 1 در بالا). به عنوان مثال، خط مشی زیر یک الگوی /a/b را مشخص می کند که با آنچه در پیام خطا است مطابقت دارد:

    به عنوان مثال، در اینجا یک سیاست Extract Variables وجود دارد که دارای سه عنصر <Pattern> است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-1">
       <Source>request</Source>
       <URIPath>
          <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
          <Pattern ignoreCase="true">/a/b/</Pattern>
          <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
       </URIPath>
       <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. بررسی کنید که آیا عنصر <Pattern> شناسایی شده در مرحله 2 دارای متغیر نیست. متغیرها باید در بریس های مجعد محصور شوند. اگر الگوی متغیری نداشته باشد، دلیل خطا همین است.

    عنصر <Pattern> با الگوی /a/b شامل متغیری نیست. بنابراین، استقرار پروکسی API با شکست مواجه می شود

    <Pattern ignoreCase="true">/a/b/</Pattern>
    
    

قطعنامه

اطمینان حاصل کنید که هر عنصر <Pattern> دارای یک متغیر است (نامی که در پرانتزهای فرفری محصور شده است). به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-1">
   <Source>request</Source>
   <URIPath>
      <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
      <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
   </URIPath>
   <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

CannotBeConvertedToNodeset

پیغام خطا

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

Error Deploying Revision [revision_number]
ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

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

Error Deploying Revision 4 to test
ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.

نمونه اسکرین شات

علت

اگر Extract Variables Policy دارای یک عبارت <XPath> باشد که در آن نوع <Variable> به عنوان nodeset تعریف شده باشد، اما عبارت را نتوان به nodeset تبدیل کرد، در این صورت استقرار پراکسی API با شکست مواجه می شود.

تشخیص

  1. خط مشی Extract Variables را که در آن خطا رخ داده است و XPath که نمی تواند به nodeset تبدیل شود را شناسایی کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-1 و XPath 123 است.

    ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    
  2. در خط مشی XML Extract Variables ناموفق، بررسی کنید که XPath تنظیم شده در عنصر <XPath> با XPath مشخص شده در پیام خطا مطابقت دارد (مرحله شماره 1 در بالا). به عنوان مثال، سیاست زیر را مشخص می کند به عنوان 123 ، که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>visitor</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="age" type="nodeset">
                <XPath>123</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    
  3. نوع عنصر <Variable> مربوط به <XPath> شناسایی شده در مرحله 2 بالا را بررسی کنید. اگر نوع <Variable> nodeset باشد، این دلیل خطا است.

    توجه داشته باشید که عبارت <XPath> در مثال Extract Variables سیاست 123 است.

    <XPath>123</XPath>
    

    عبارت 123 نمی توان به nodeset تبدیل کرد. بنابراین، استقرار پروکسی API با شکست مواجه می شود.

قطعنامه

مطمئن شوید که عبارات <XPath> استفاده شده در خط مشی Extract Variables را می توان به nodeset تبدیل کرد اگر نوع <Variable> به عنوان nodeset تعریف شده باشد. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables-1</DisplayName>
    <Properties/>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>visitor</VariablePrefix>
    <XMLPayload stopPayloadProcessing="false">
        <Namespaces/>
        <Variable name="age" type="nodeset">
            <XPath>/visitor/age</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

InvalidPattern

پیغام خطا

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

Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]

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

Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.

نمونه اسکرین شات

علت

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

تشخیص

  1. خط مشی شکست خورده Extract Variables را از پیام خطا شناسایی کنید. به عنوان مثال، در خطای زیر، نام سیاست Extract-Variables-2 است:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. در خط مشی XML Extract Variables ناموفق، بررسی کنید که آیا هر یک از این عناصر وجود دارد و یک عنصر <Pattern> را شامل می شود.: URIPath ، QueryParam ، Header ، FormParam ، XMLPayload یا JSONPayload .

    به عنوان مثال، در اینجا یک نمونه سیاست Extract Variables با عنصر <Pattern> در عنصر <QueryParam> آورده شده است:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-2">
        <DisplayName>ExtractVariables-2</DisplayName>
        <Source>request</Source>
        <QueryParam name="code">
            <Pattern ignoreCase="true">{*}</Pattern>
        </QueryParam>
        <VariablePrefix>queryinfo</VariablePrefix>
    </ExtractVariables>
    
  3. تعریف هر یک از عناصر <Pattern> را بررسی کنید. اگر هر عنصر <Pattern> با تعریف نامعتبر وجود داشته باشد، دلیل این خطا است.

    در مثال سیاست Extract Variables نشان داده شده در بالا، توجه کنید که تعریف <Pattern> در عنصر <QueryParam> نامعتبر است. بنابراین، استقرار پروکسی API با شکست مواجه می شود. همچنین درباره تطبیق و ایجاد متغیر رجوع کنید

    <Pattern ignoreCase="true">{*}</Pattern>
    
    

قطعنامه

اطمینان حاصل کنید که تعریف عنصر <Pattern> در عناصر URIPath , QueryParam , Header , FormParam , XMLPayload یا JSONPayload در خط مشی Extract Variables معتبر است. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-2">
    <DisplayName>Extract a value from a query parameter</DisplayName>
    <Source>request</Source>
    <QueryParam name="code">
        <Pattern ignoreCase="true">{code}</Pattern>
    </QueryParam>
    <VariablePrefix>queryinfo</VariablePrefix>
</ExtractVariables>

همچنین درباره تطبیق و ایجاد متغیر رجوع کنید

XPathCompilation Failed

پیغام خطا

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

Error Deploying Revision [revision_number]
ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].

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

Error Deploying Revision 1 to test
ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.

نمونه اسکرین شات

علت

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

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

تشخیص

  1. خط مشی Extract Variables را که در آن خطا رخ داده و XPath که نمی تواند کامپایل شود را شناسایی کنید. شما می توانید هر دو مورد را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر، نام خط مشی EV-XML-Age است و xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name .

    ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    
  2. در خط مشی XML Extract Variables ناموفق، بررسی کنید که XPath تنظیم شده در عنصر <XPath> با XPath مشخص شده در پیام خطا مطابقت دارد (مرحله شماره 1 در بالا). به عنوان مثال، سیاست زیر را مشخص می کند به عنوان /apigee:Directions/apigee:route/apigee:leg/apigee:name ، که با آنچه در پیام خطا است مطابقت دارد:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
      <DisplayName>EV-XML-Age</DisplayName>
      <Source clearPayload="false">request</Source>
      <XMLPayload stopPayloadProcessing="false">
        <Namespaces>
            <Namespace prefix="gmail">http://mail.google.com</Namespace>
        </Namespaces>
        <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
            </Variable>
      </XMLPayload>
    </ExtractVariables>
    
  3. عناصر <Namespaces> و <XPath> را در خط مشی Extract Variables بررسی کنید. اگر <XPath> خاصی که در پیام خطا نشان داده شده است از پیشوند یا مقداری استفاده می کند که بخشی از فضای نامی اعلام شده در خط مشی Extract Variables نیست، آنگاه این دلیل خطا است.

    توجه داشته باشید که <XPath> خاص در مثال Extract Variables از پیشوند apigee استفاده می کند.

    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    

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

قطعنامه

اطمینان حاصل کنید که همه فضاهای نامی که در عناصر <XPath> استفاده می‌شوند، در سیاست Extract Variables اعلام شده‌اند. به عنوان مثال:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
  <DisplayName>EV-XML-Age</DisplayName>
  <Source clearPayload="false">request</Source>
  <XMLPayload stopPayloadProcessing="false">
    <Namespaces>
        <Namespace prefix="apigee">http://www.apigee.com</Namespace>
        <Namespace prefix="gmail">http://mail.google.com</Namespace>
    </Namespaces>
    <Variable name="legName" type="string">
        <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    </Variable>
  </XMLPayload>
</ExtractVariables>