הדף הזה רלוונטי ל-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>חסר סוגר פותח. לכן הוא נחשב לביטוי רגולרי לא תקין. לכן הפריסה של שרת ה-proxy של ה-API נכשלת.
רזולוציה
מוודאים שכל רכיב <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, ה-Deployment (פריסה) של 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>.
רזולוציה
מוודאים שמוגדר רכיב <Expression> לא ריק ותקין במדיניות RegularExpressionProtection, מתחת לרכיב <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>.
רזולוציה
מוודאים שמוגדר רכיב <Expression> לא ריק ותקין במדיניות RegularExpressionProtection, מתחת לרכיב <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>