הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
InvalidRegularExpression
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
אם הביטוי הרגולרי ברכיב <Pattern> של מדיניות RegularExpressionProtection לא תקין, הפריסה של שרת ה-API Proxy תיכשל.
אבחון
מזהים את השם של מדיניות 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.
בודקים את כל רכיבי
<Pattern>ב-XML של מדיניות ההגנה על ביטויים רגולריים שנכשלה. בודקים אם לאחד מהרכיבים<Pattern>יש ביטוי רגולרי לא תקין. אם אחד מרכיבי<Pattern>כולל ביטוי רגולרי לא תקין, זו הסיבה לשגיאה.לדוגמה, במדיניות הבאה מוגדר הערך
Pattern>שלfoo){2}, שנחשב לביטוי רגולרי לא תקין:<?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>XPathCompilationFailed
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
אם הקידומת או הערך שמשמשים ברכיב <XPath> לא שייכים לאף אחד ממרחבי השמות המוצהרים במדיניות RegularExpressionProtection, פריסת ה-proxy ל-API תיכשל.
מידע נוסף על מרחבי שמות, XPath ותחיליות זמין במאמר XML Namespaces and How They Affect XPath and XSLT.
אבחון
צריך לזהות את השם של מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת ביטוי ה-XPath שבו נעשה שימוש. אפשר למצוא את שני הפריטים האלה בהודעת השגיאה.
לדוגמה, בשגיאה הבאה , שם המדיניות הוא
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.
ב-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>
- בודקים את הרכיבים
<Namespaces>ו-<Expression>במדיניות RegularExpressionProtection. אם הרכיב<Expression>הספציפי שמצוין בהודעת השגיאה משתמש בקידומת או בערך שלא כלולים במרחבי השמות שהוצהרו במדיניות RegularExpressionProtection, זו הסיבה לשגיאה.שימו לב שהמאפיין הספציפי
<XPath>משתמש בקידומתnotapigeeבדוגמה RegularExpressionProtection policy:<Expression>/notapigee:foo/notapigee:bar</Expression>
עם זאת, הקידומת
notapigeeלא מוגדרת באף אחד מהרכיבים<Namespace>, ולכן הקומפילציה של<XPath>נכשלת ופריסת ה-VM נכשלת.
רזולוציה
מוודאים שכל מרחבי השמות שנעשה בהם שימוש ברכיבי <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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
אם במדיניות הביטוי הרגולרי יש ביטוי <XPath> שבו הרכיב <Type> מוגדר כ-nodeset, אבל אי אפשר להמיר את הביטוי ל-nodeset, פריסת ה-proxy ל-API תיכשל.
אבחון
מזהים את מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת ביטוי ה-XPath שלא ניתן להמיר ל-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.
ב-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>
בודקים את הערך שמוגדר ברכיב
<Type>מתחת לרכיב<XPath>. אם הרכיב<Type>הואnodeset, זו הסיבה לשגיאה.בדוגמה הזו, ביטוי ה-XPath הוא count() שלא מחזיר צומת אחד או יותר. לכן, הפריסה של ה-API Proxy נכשלת.
רזולוציה
אם רכיב <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>
JSONPathCompilationFailed
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
אם הרכיב <Expression> שמתחת לרכיב <JSONPath> במדיניות של הגנה באמצעות ביטויים רגולריים מוגדר לביטוי JSONPath לא תקין, פריסת ה-proxy ל-API נכשלת.
אבחון
מזהים את השם של מדיניות RegularExpressionProtection שבה אירעה השגיאה ושבה נעשה שימוש בביטוי JSONPath לא תקין. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה , שם המדיניות הוא
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.
בקובץ ה-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>
בודקים את הרכיב
<Expression>מתחת לרכיב<JSONPath>במדיניות. אם הוא לא תואם לתחביר של JSONPath, זו הסיבה לשגיאה. בדוגמה שלמעלה, חסרה הסוגריים המרובעים הסוגרים, ולכן הביטוי לא תקין.מכיוון שביטוי נתיב ה-JSON לא תקין, פריסת ה-API Proxy נכשלת.
רזולוציה
צריך לוודא שהערך של הרכיב <Expression> בתוך הרכיב <JSONPath> במדיניות ההגנה על ביטויים רגולריים הוא ביטוי 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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
אם למדיניות RegularExpressionProtection אין אף אחד מהרכיבים <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> או <JSONPayload>, הפריסה של API Proxy תיכשל.
כפי שמצוין בהודעת השגיאה, למדיניות RegularExpressionProtection צריך להיות לפחות אחד מהרכיבים הבאים: <URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> או <JSONPayload>.
אבחון
מזהים את השם של מדיניות RegularExpressionProtection שבה התרחשה השגיאה. הוא מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה , שם המדיניות הוא
Regular-Expression-Protection-1:RegularExpressionProtection Regular-Expression-Protection-1: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
בודקים את המדיניות של ההגנה באמצעות ביטויים רגולריים שנכשלה (שצוינה בשלב 1 למעלה). אם במדיניות לא מופיע אפילו אחד מהרכיבים הבאים:
<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> </RegularExpressionProtection>מכיוון שאף אחד מהאלמנטים הנדרשים לא מופיע במדיניות Extract Variables, הפריסה של proxy ל-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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
אם לאחד מהרכיבים ברמה העליונה (<URIPath>, <QueryParam>, <Header>, <FormParam>, <XMLPayload> או <JSONPayload>) לא מוגדר רכיב <Pattern> במדיניות RegularExpressionProtection, פריסת ה-proxy ל-API תיכשל.
אבחון
מזהים את השם של מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת רכיב הצאצא שלא כולל את הרכיב
<Pattern>. שני הפריטים האלה מופיעים בהודעת השגיאה.לדוגמה, בשגיאה הבאה, שם המדיניות הוא
Regular-Expression-Protection-1ורכיב הצאצא הואXPath:RegularExpressionProtection Regular-Expression-Protection-1: No patterns to enforce in XPath.
- בודקים את מדיניות ההגנה על ביטויים רגולריים שנכשלה ומוודאים שרכיב הבן שזוהה בשלב 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 Proxy נכשלת.
רזולוציה
צריך לוודא שלפחות אחד מהרכיבים <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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
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.
דוגמה לצילום מסך של שגיאה

מטרה
השגיאה הזו מתרחשת אם למדיניות RegularExpressionProtection מוגדר קידומת ברכיב <Namespace> שמתחת לרכיב <XMLPayload>, אבל לא מוגדר URI.
אבחון
מזהים את מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת שם הקידומת שלא ממופה ל-URI. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular Expression Protection-1 והקידומת היא apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Non-empty prefix apigee cannot be mapped to empty uri.
בקובץ ה-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>
מוודאים שלרכיב
<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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Duplicate prefix prefix_name.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
דוגמה לצילום מסך של שגיאה

מטרה
השגיאה הזו מתרחשת אם למדיניות RegularExpressionProtection יש אותו קידומת שמוגדרת יותר מפעם אחת ברכיב <Namespace> ברכיב <XMLPayload>.
לדוגמה, השגיאה הזו מתרחשת כי הקידומת apigee מוגדרת פעמיים, כמו שמוצג בהמשך:
<Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace>
אבחון
מזהים את מדיניות RegularExpressionProtection שבה התרחשה השגיאה ואת שם הקידומת. שני הפריטים האלה מופיעים בהודעת השגיאה.
לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular Expression Protection-1 והקידומת היא apigee:
RegularExpressionProtection Regular-Expression-Protection-1: Duplicate prefix apigee.
בקובץ ה-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>
בודקים אם רכיב
<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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty XPath expression.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
דוגמה לצילום מסך של שגיאה

מטרה
אם למדיניות RegularExpressionProtection לא מוגדר רכיב <Expression> בתוך הרכיב <XPath>, פריסת proxy ל-API תיכשל.
אבחון
מזהים את מדיניות ההגנה על ביטויים רגולריים שנכשלה מתוך הודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular-Expression-Protection-1:
RegularExpressionProtection Regular-Expression-Protection-1: Empty XPath expression.
ב-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>
פריסת ה-API Proxy נכשלת כי יש אלמנט
<Expression>ריק בתוך האלמנט<XPath>.
רזולוציה
מוודאים שבמדיניות 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
הודעת השגיאה
פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:
Error Saving Revision revision_number RegularExpressionProtection policy_name: Empty JSONPath expression.
הודעת שגיאה לדוגמה
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
דוגמה לצילום מסך של שגיאה

מטרה
אם למדיניות RegularExpressionProtection לא מוגדר רכיב <Expression> בתוך הרכיב <JSONPath>, פריסת proxy ל-API תיכשל.
אבחון
מזהים את מדיניות ההגנה על ביטויים רגולריים שנכשלה מתוך הודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Regular-Expression-Protection-1:
Error Saving Revision 1 RegularExpressionProtection Regular-Expression-Protection-1: Empty JSONPath expression.
ב-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>
פריסת ה-API Proxy נכשלת כי יש אלמנט
<Expression>ריק בתוך האלמנט<JSONPath>.
רזולוציה
מוודאים שבמדיניות 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>