Normal İfade Koruması politikası dağıtım hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

InvalidRegularExpression

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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.

Örnek Hata Mesajı

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.

Örnek Hata Ekran Görüntüsü

InvalidRegularExpression hata metni

Neden

RegularExpressionProtection politikasının <Pattern> öğesindeki normal ifade geçerli değilse API Proxy'nin dağıtımı başarısız olur.

Teşhis

  1. Hata mesajından RegularExpressionProtection politikasının adını belirleyin. Örneğin, aşağıdaki hatada RegularExpressionProtection politikası adı Regular-Expression-Protection-1:'dir.

    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. Başarısız Normal İfade Koruması politikası XML'indeki tüm <Pattern> öğelerini inceleyin. <Pattern> öğelerinden herhangi birinin geçersiz normal ifade içerip içermediğini kontrol edin. <Pattern> öğelerinden herhangi birinde geçersiz bir normal ifade varsa hatanın nedeni budur.

    Örneğin, aşağıdaki politika foo){2} için Pattern> değerini belirtir. Bu değer geçersiz normal ifade olarak kabul edilir:

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

    Yukarıdaki örnekte, <Pattern> içinde belirtilen normal ifadede açılış parantezi eksik. Bu nedenle geçersiz bir normal ifade olarak kabul edilir. Bu nedenle API Proxy'nin dağıtımı başarısız olur.

Çözünürlük

RegularExpressionProtection politikasındaki her <Pattern> öğesinin geçerli bir normal ifade içerdiğinden emin olun. Normal ifadenizde hata ayıklama yapmak için farklı online veya çevrimdışı normal ifade araçlarını arayabilirsiniz. Yukarıda gösterilen Örnek Normal İfade Koruması politikasını düzeltmek için eksik parantezleri ekleyin:

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

XPathCompilationFailed

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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.

Örnek Hata Mesajı

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.

Örnek Hata Ekran Görüntüsü

XPathCompilationFailed hata metni

Neden

<XPath> öğesinde kullanılan önek veya değer, regularExpressionProtection politikasında bildirilen ad alanlarından herhangi birinin parçası değilse API proxy'sinin dağıtımı başarısız olur.

Ad alanları, XPath ve ön ek hakkında daha fazla bilgiyi XML Ad Alanları ve XPath ve XSLT'yi Nasıl Etkiledikleri bölümünde bulabilirsiniz.

Teşhis

  1. Hatanın oluştuğu RegularExpressionProtection politikasının adını ve kullanılan XPath ifadesini belirleyin. Bu iki öğeyi de hata mesajında bulabilirsiniz.

    Örneğin, aşağıdaki hatada politika adı Regular-Expression-Protection-1 ve XPath ifadesi /notapigee:foo/notapigee:bar:'dır.

    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. Başarısız Düzenli İfade Koruması politikası XML'inde, Expression öğesinde ayarlanan XPath'in hata mesajında tanımlanan XPath ile eşleştiğini doğrulayın (yukarıdaki 1. adım).

    Örneğin, aşağıdaki politikada XPath, hata mesajındakiyle eşleşen /notapigee:foo/notapigee:bar olarak belirtilmiştir:

    <?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. RegularExpressionProtection politikasındaki <Namespaces> ve <Expression> öğelerini inceleyin. Hata mesajında belirtilen <Expression>, RegularExpressionProtection politikasında tanımlanan ad alanlarının parçası olmayan bir önek veya değer kullanıyorsa hatanın nedeni budur.

    RegularExpressionProtection politikası örneğinde, belirli <XPath> değerinin notapigee ön ekini kullandığını unutmayın:

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

    Ancak notapigee ön eki <Namespace> öğelerinin hiçbirinde tanımlanmamıştır. Bu nedenle, <XPath> derlemesi başarısız olur ve dağıtım hatası meydana gelir.

Çözünürlük

<XPath> öğelerinin altındaki <Expression> öğelerinde kullanılan tüm ad alanlarının NormalExpressionProtection politikasında tanımlandığından emin olun. Yukarıdaki örneği düzeltmek için notapigee ön ekini, ad alanlarında tanımlanan apigee ile değiştirebilirsiniz:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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.

Örnek Hata Mesajı

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.

Örnek Hata Ekran Görüntüsü

CannotBeConvertedToNodeset hata metni

Neden

Normal ifade politikasında, <Type> öğesinin nodeset olarak tanımlandığı bir <XPath> ifadesi varsa ancak ifade nodeset olarak dönüştürülemiyorsa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hatanın oluştuğu NormalExpressionProtection politikasını ve düğüm kümesine dönüştürülemeyen XPath ifadesini tanımlayın. Bu iki öğeyi de hata mesajında bulabilirsiniz.

    Örneğin, aşağıdaki hatada politika adı Regular-Expression-Protection-1 ve XPath ifadesi count(//apigee:foo):'dır.

    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. Başarısız Normal İfade Koruması politikası XML'inde, <XPath> öğesinin <Expression> öğesinde ayarlanan XPath'in, hata mesajında tanımlanan XPath ile eşleştiğini doğrulayın (yukarıdaki 1. adım).

    Örneğin, aşağıdaki politika, count(//apigee:foo) olarak belirtir. Bu, hata mesajındakiyle eşleşir:

    <?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. <XPath> öğesinin altındaki <Type> öğesinde ayarlanan değeri inceleyin. <Type> öğesi nodeset ise hatanın nedeni budur.

    Bu örnekte, XPath ifadesi count() olup bir veya daha fazla düğüm döndürmez. Bu nedenle API Proxy'nin dağıtımı başarısız olur.

Çözünürlük

<Type> öğesi nodeset olarak ayarlanmışsa <XPath> öğesinde ayarlanan <Expression> öğesinin sonucunun bir veya daha fazla düğüm olduğundan emin olun. Alternatif olarak, <Type> öğesini kullanım alanınıza göre daha uygun bir değerle değiştirin.

Yukarıdaki örneği düzeltmek için <Expression> öğesini, düğüm döndürebilen farklı bir değerle değiştirebilirsiniz:

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

JSONPathCompilationFailed

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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.

Örnek Hata Mesajı

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.

Örnek Hata Ekran Görüntüsü

JSONPathCompilationFailed hata metni

Neden

Normal İfade Koruması politikasının <JSONPath> öğesi altındaki <Expression> öğesi geçersiz bir JSONPath ifadesi olarak ayarlanırsa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hatanın oluştuğu ve geçersiz JSONPath ifadesinin kullanıldığı RegularExpressionProtection politikasının adını belirleyin. Bu öğelerin ikisini de hata mesajında bulabilirsiniz.

    Örneğin, aşağıdaki hatada politika adı Regular-Expression-Protection-1 ve JSONPath ifadesi $.store.book[*.author:'tır.

    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. Başarısız Normal İfade Koruması politikası XML'inde, Expression öğesinde ayarlanan JSONPath'in hata mesajında tanımlanan JSONPath ile eşleştiğini doğrulayın (yukarıdaki 1. adım).

    Örneğin, aşağıdaki politikada <JSONPath> öğesinin altındaki Expression öğesi $.store.book[*.author olarak belirtilmiştir. Bu, hata mesajındakiyle eşleşir:

    <?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. Politikadaki <JSONPath> öğesinin altındaki <Expression> öğesini inceleyin. JSONPath söz dizimine uymuyorsa hatanın nedeni budur. Yukarıdaki örnekte, kapanış köşeli parantezi eksik olduğundan ifadeyi geçersiz kılar.

    JSON Yol İfadesi geçersiz olduğundan API Proxy'nin dağıtımı başarısız olur.

Çözünürlük

Normal İfade Koruması politikasındaki <JSONPath> öğesinin içindeki <Expression> öğesinin değerinin geçerli bir JSONPath ifadesi olduğundan emin olun.

Yukarıda gösterilen örneği düzeltmek için <Expression> öğe değerine eksik kapatıcı köşeli parantezi ekleyebilirsiniz:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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

Örnek Hata Mesajı

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

Örnek Hata Ekran Görüntüsü

NothingToEnforce hata metni

Neden

RegularExpressionProtection politikasında <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> veya <JSONPayload> öğelerinden hiçbiri yoksa API Proxy'nin dağıtımı başarısız olur.

Hata mesajında belirtildiği gibi, regularExpressionProtection politikası, politikaya şu öğelerden en az birini içermelidir: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> veya <JSONPayload>.

Teşhis

  1. Hatanın oluştuğu RegularExpressionProtection politikasının adını belirleyin. Bu bilgiyi hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı Regular-Expression-Protection-1: şeklindedir

    RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
    
  2. Başarısız Normal İfade Koruması politikasını (yukarıdaki 1. adımda tanımlanmıştır) inceleyin. Politikada <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> veya <JSONPayload> öğelerinden biri bile yoksa hatanın nedeni budur.

    Örneğin, aşağıdaki Normal İfade Koruması politikasında yukarıda belirtilen öğelerden hiçbiri yoktur:

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

    Zorunlu öğelerin hiçbiri Değişkenleri Ayıkla politikasında bulunmadığından API proxy'sinin dağıtımı başarısız olur.

Çözünürlük

NormalExpressionProtection politikasının şu zorunlu öğelerden en az birine sahip olduğundan emin olun: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> veya <JSONPayload>. Örneğin:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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

Örnek Hata Mesajı

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

Örnek Hata Ekran Görüntüsü

NoPatternsToEnforce hata metni

Neden

Üst düzey öğelerden (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> veya <JSONPayload>) herhangi birinde RegularExpressionProtection politikasında tanımlanmış bir <Pattern> öğesi yoksa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hatanın oluştuğu RegularExpressionProtection politikasının adını ve <Pattern> öğesini içermeyen alt öğeyi belirleyin. Bu iki öğeyi de hata mesajında bulabilirsiniz.

    Örneğin, aşağıdaki hatada politika adı Regular-Expression-Protection-1, alt öğe ise XPath: şeklindedir

    RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
    
  2. Başarısız olan Normal İfade Koruması politikasını inceleyin ve 1. adımda tanımlanan alt öğede <Pattern> öğesinin olup olmadığını doğrulayın. <Pattern> öğesi yoksa hatanın nedeni budur.

    Örneğin, aşağıdaki politikada <XPath> içinde <Pattern> öğesi yoktur:

    <?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> öğesinde <Pattern> öğesi olmadığı için API Proxy'nin dağıtımı başarısız olur.

Çözünürlük

<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> veya <JSONPayload> öğelerinden birinde en az bir <Pattern> değerinin belirtildiğinden emin olun. Öğenin doğru şekilde nasıl belirtileceği hakkında bilgi için NormalExpressionProtection politikası başlıklı makaleye bakın.

Yukarıdaki örneği düzeltmek için <Pattern> öğesini <XMLPayload> altındaki <XPath> öğesine eklememiz yeterlidir:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

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

Örnek Hata Mesajı

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

Örnek Hata Ekran Görüntüsü

NONEmptyPrefixMappedToEmptyURI hata metni

Neden

Bu hata, NormalExpressionProtection politikası, <XMLPayload> öğesi altındaki <Namespace> öğesinde tanımlı bir öneke sahipse ancak URI tanımlı değilse ortaya çıkar.

Teşhis

  1. Hatanın oluştuğu RegularExpressionProtection politikasını ve URI ile eşlenmemiş ön ekin adını tanımlayın. Bu iki öğeyi de hata mesajında bulabilirsiniz.

    Örneğin, aşağıdaki hatada politika adı Normal İfade Koruması-1 ve önek apigee'dir:

    RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. Başarısız Normal İfade Koruması politikası XML'inde, <XMLPayload> öğesinin altındaki <Namespace> öğesinde ayarlanan ön ek adının, hata mesajında belirtilen ön ek adıyla (yukarıdaki 1. adım) eşleştiğini doğrulayın.

    Örneğin, aşağıdaki politikada <Namespace> öğesinde apigee adlı bir önek belirtilmiştir. Bu önek , hata mesajındakiyle eşleşir:

    <?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. 2. adımda tanımlanan belirli ön eke sahip <Namespace> öğesinin geçerli bir URI'si olup olmadığını doğrulayın. URI yoksa hatanın nedeni budur.

    Yukarıda gösterilen Normal İfade Koruması politikası örneğinde, apigee ön ekiyle <Namespace> öğesine karşılık gelen bir URI olmadığını fark edin. Bu nedenle aşağıdaki hatayı alırsınız:

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

Çözünürlük

Bir önekle tanımlanan tüm <Namespace> öğelerinin, Değişkenleri Ayıklama politikasında karşılık gelen bir URI'ye sahip olduğundan emin olun. Örneğin:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Duplicate prefix prefix_name.

Örnek Hata Mesajı

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

Örnek Hata Ekran Görüntüsü

Ön ek hata metni

Neden

Bu hata, RegularExpressionProtection politikasında <XMLPayload> öğesinin altındaki <Namespace> öğesinde aynı ön ek birden fazla kez tanımlanmışsa ortaya çıkar.

Örneğin, apigee ön eki aşağıda gösterildiği gibi iki kez tanımlandığından bu hata meydana gelir:

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

Teşhis

  1. Hatanın oluştuğu RegularExpressionProtection politikasını ve önekin adını belirleyin. Bu iki öğeyi de hata mesajında bulabilirsiniz.

    Örneğin, aşağıdaki hatada politika adı Normal İfade Koruması-1 ve önek apigee'dir:

    RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
    
  2. Başarısız Normal İfade Koruması politikası XML'inde, <XMLPayload> öğesinin altındaki <Namespace> öğesinde ayarlanan ön ek adının, hata mesajında belirtilen ön ek adıyla (yukarıdaki 1. adım) eşleştiğini doğrulayın.

    Örneğin, aşağıdaki politikada <Namespace> öğesinde apigee adlı bir önek belirtilmiştir. Bu önek , hata mesajındakiyle eşleşir:

    <?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. 2. adımda tanımlanan belirli önek içeren <Namespace> öğesinin birden fazla kez tanımlanıp tanımlanmadığını belirleyin. Bir kezden fazla tanımlanmışsa hatanın nedeni budur.

    Yukarıda gösterilen Normal İfade Koruması politikası örneğinde, apigee ön ekiyle başlayan <Namespace> öğesinin iki kez tanımlandığına dikkat edin. Bu nedenle, aşağıdaki hatayı alırsınız:

    Duplicate prefix apigee.
    

Çözünürlük

RegularExpressionProtection politikasındaki <Namespace> öğelerinde her ön ek için yalnızca bir tanım bulunduğundan emin olun. Örneğin:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty XPath expression.

Örnek Hata Mesajı

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

Örnek Hata Ekran Görüntüsü

EmptyXPathExpression hata metni

Neden

RegularExpressionProtection politikasında <XPath> öğesinde ayarlanmış bir <Expression> öğesi yoksa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hata mesajından başarısız olan Normal İfade Koruması politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Normal-Expression-Protection-1 şeklindedir:

    RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
    
  2. Başarısız olan Normal İfade Koruması politikası XML'inde, içinde <Expression> öğesi tanımlı olmayan <XPath> alt öğesine sahip bir <XMLPayload> öğesi olup olmadığını veya <Expression> öğesinin herhangi bir değere ayarlanıp ayarlanmadığını belirleyin. Öyleyse hatanın nedeni budur.

    Örneğin, <XMLPayload> öğesi içeren bir Normal İfade Koruması politikası aşağıda verilmiştir:

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

    <XPath> öğesinde boş bir <Expression> öğesi bulunduğundan API Proxy'nin dağıtımı başarısız olur.

Çözünürlük

RegularExpressionProtection politikasında, <XPath> öğesi altında boş olmayan ve geçerli bir <Expression> öğesi tanımlandığından emin olun. Örneğin:

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

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını verir:

Error Saving Revision revision_number
RegularExpressionProtection policy_name: Empty JSONPath expression.

Örnek Hata Mesajı

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

Örnek Hata Ekran Görüntüsü

EmptyJSONPathExpression hata metni

Neden

RegularExpressionProtection politikasında <JSONPath> öğesinde ayarlanmış bir <Expression> öğesi yoksa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hata mesajından başarısız Normal İfade Koruması politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Normal-Expression-Protection-1 şeklindedir:

    Error Saving Revision 1
    RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
    
  2. Başarısız Düzenli İfade Koruması politikası XML'inde, <JSONPath> alt öğesine sahip ve içinde <Expression> öğesi tanımlanmamış bir <JSONPayload> öğesi olup olmadığını veya <Expression> öğesinin herhangi bir değere ayarlanıp ayarlanmadığını belirleyin. Öyleyse hatanın nedeni budur.

    Örneğin, <JSONPayload> öğesi içeren bir Normal İfade Koruması politikası aşağıda verilmiştir:

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

    <JSONPath> öğesinde boş bir <Expression> öğesi bulunduğundan API Proxy'nin dağıtımı başarısız olur.

Çözünürlük

RegularExpressionProtection politikasında, <JSONPath> öğesi altında boş olmayan ve geçerli bir <Expression> öğesi tanımlandığından emin olun. Örneğin:

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