Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं. info
InvalidIndex
गड़बड़ी का मैसेज
Edge यूज़र इंटरफ़ेस (यूआई) या Edge Management API के ज़रिए एपीआई प्रॉक्सी को डिप्लॉय करने पर, यह गड़बड़ी का मैसेज दिखता है:
Error in deployment for environment [environment] The revision is deployed, but traffic cannot flow. AssignMessage[policy_name]: index must be greater than zero in [attribute].[index]
गड़बड़ी के मैसेज का उदाहरण
Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
उदाहरण के तौर पर दिया गया स्क्रीनशॉट

वजह
अगर Assign Message नीति के <Copy> और/या <Remove> एलिमेंट में दिया गया इंडेक्स 0 या कोई नेगेटिव नंबर है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकेगा.
उदाहरण के लिए, अगर आपने एक ही नाम वाले कई क्वेरी पैरामीटर पास किए हैं, तो उन्हें Edge में इंडेक्स किए गए फ़्लो वैरिएबल के तौर पर ऐक्सेस किया जा सकता है. मान लें कि आपको तीन छात्र-छात्राओं के आईडी को क्वेरी पैरामीटर के तौर पर पास करना है. इसके लिए, यह तरीका अपनाएं:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
इसके बाद, मान लें कि आपने Assign Message नीति में इंडेक्स नंबर 0, 1, और 2 का इस्तेमाल करके इन क्वेरी पैरामीटर को ऐक्सेस करने की कोशिश की है. जैसे:
id.0
id.1 and
id.2
इस मामले में, प्रॉक्सी को डिप्लॉय नहीं किया जा सकता, क्योंकि इंडेक्स 1 से शुरू होना चाहिए. इसका मतलब है कि पहले क्वेरी पैरामीटर "id=1" को "id.1" के तौर पर ऐक्सेस किया जा सकता है. दूसरे क्वेरी पैरामीटर "id=2" को ऐक्सेस करने के लिए, आपको इंडेक्स 2 यानी "id.2" का इस्तेमाल करना होगा. इसी तरह, तीसरे क्वेरी पैरामीटर "id=3" को ऐक्सेस करने के लिए, "id.3" का इस्तेमाल किया जा सकता है.
ज़्यादा जानकारी के लिए, यहां जाएं.
संक्रमण की जांच
उस 'मैसेज असाइन करें' नीति का पता लगाएं जिसमें गड़बड़ी हुई है. साथ ही, एट्रिब्यूट का नाम और अमान्य इंडेक्स का पता लगाएं. आपको ये सभी आइटम, गड़बड़ी के मैसेज में मिल सकते हैं. उदाहरण के लिए, यहां दी गई गड़बड़ी में, नीति का नाम
GeneratingGeocodingRequest, एट्रिब्यूट का नामid, और इंडेक्स0है:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0पुष्टि करें कि Assign Message नीति के एक्सएमएल में इस्तेमाल किया गया एट्रिब्यूट का नाम और इंडेक्स, गड़बड़ी के मैसेज (ऊपर चरण #1) में पहचाने गए एट्रिब्यूट के नाम और इंडेक्स से मेल खाता हो. उदाहरण के लिए, यहां दी गई नीति में एट्रिब्यूट
idऔर इंडेक्स को0के तौर पर बताया गया है. यह गड़बड़ी के मैसेज में मौजूद जानकारी से मेल खाता है:<AssignMessage name="GenerateStudentsRequest"> <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo> <Copy source="request"> <QueryParams> <QueryParam name="school_name"/> <QueryParam name="id.0"/> <QueryParam name="id.1"/> <QueryParam name="id.2"/> </QueryParams> </Copy> </AssignMessage>
अगर तय किया गया इंडेक्स 0 या कोई नेगेटिव नंबर है, तो यह गड़बड़ी की वजह है.
ऊपर दिखाए गए Assign Message नीति के उदाहरण में, इंडेक्स 0 का इस्तेमाल करके क्वेरी पैरामीटर "id" की पहली वैल्यू को ऐक्सेस करने की कोशिश की जा रही है. इसलिए, एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सका. गड़बड़ी का मैसेज यह है:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
रिज़ॉल्यूशन
'मैसेज असाइन करें' नीति में, एक ही नाम वाले कई हेडर, क्वेरी पैरामीटर या अन्य पैरामीटर ऐक्सेस करते समय, पक्का करें कि इंडेक्स हमेशा शून्य से ज़्यादा हो. उदाहरण के लिए:
<AssignMessage name="GenerateStudentsRequest">
<AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
<Copy source="request">
<QueryParams>
<QueryParam name="school_name"/>
<QueryParam name="id.1"/>
<QueryParam name="id.2"/>
<QueryParam name="id.3"/>
</QueryParams>
</Copy>
</AssignMessage>
InvalidVariableName
गड़बड़ी का मैसेज
Edge यूज़र इंटरफ़ेस (यूआई) या Edge Management API के ज़रिए एपीआई प्रॉक्सी को डिप्लॉय करने पर, यह गड़बड़ी का मैसेज दिखता है:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
गड़बड़ी के मैसेज का उदाहरण
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
उदाहरण के तौर पर दिया गया स्क्रीनशॉट

वजह
अगर चाइल्ड एलिमेंट <Name> खाली है या <AssignVariable> एलिमेंट में नहीं दिया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकेगा. ऐसा इसलिए, क्योंकि कोई मान्य वैरिएबल नाम नहीं है जिसे वैल्यू असाइन की जा सके. वैरिएबल का मान्य नाम डालना ज़रूरी है.
संक्रमण की जांच
उस एपीआई प्रॉक्सी में असाइन मैसेज की सभी नीतियां देखें जहां गड़बड़ी हुई है. अगर Assign Message नीति में कोई ऐसा चाइल्ड एलिमेंट <Name> है जो खाली है या <AssignVariable> एलिमेंट में नहीं दिया गया है, तो गड़बड़ी की वजह यही है.
उदाहरण 1: 'मैसेज असाइन करें' नीति में, <Name> एलिमेंट को तय नहीं किया गया है.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
दूसरा उदाहरण: असाइन मैसेज की इस नीति में, <Name> एलिमेंट खाली है .
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Name></Name>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
रिज़ॉल्यूशन
पक्का करें कि Assign Message नीति के <AssignVariable> एलिमेंट में, चाइल्ड एलिमेंट <Name> हमेशा तय किया गया हो और वह खाली न हो. उदाहरण के लिए:
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <AssignVariable> <Name>appSecret</Name> <Value>abcd1234</Value> </AssignVariable> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>