मैसेज नीति के डिप्लॉयमेंट से जुड़ी गड़बड़ी की समस्या हल करना

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

InvalidIndex

गड़बड़ी का मैसेज

गड़बड़ी के इस मैसेज के साथ, Edge के यूज़र इंटरफ़ेस (यूआई) या Edge मैनेजमेंट एपीआई के ज़रिए, एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता:

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

स्क्रीनशॉट का उदाहरण

वजह

अगर 'मैसेज असाइन करें' नीति के <Copy> और/या <Remove> एलिमेंट में तय किया गया इंडेक्स 0 या नेगेटिव संख्या है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.

उदाहरण के लिए, अगर एक ही नाम वाले कई क्वेरी पैरामीटर पास किए जाते हैं, तो उन्हें Edge में इंडेक्स फ़्लो वैरिएबल के तौर पर ऐक्सेस किया जा सकता है. मान लें कि आपको तीन छात्र-छात्राओं के आईडी, क्वेरी पैरामीटर के तौर पर पास करने हैं. इसके बाद, यह काम किया जा सकता है:

https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3

इसके बाद, मान लें कि 'मैसेज असाइन करें' नीति में, इंडेक्स नंबर 0, 1, और 2 के साथ इन क्वेरी पैरामीटर को ऐक्सेस करने की कोशिश की गई है:

id.0
id.1 and
id.2

इस स्थिति में, प्रॉक्सी का डिप्लॉयमेंट नहीं हो पाता है, क्योंकि इंडेक्स 1 से शुरू होना चाहिए. इसका मतलब है कि आपके पास पहले क्वेरी पैरामीटर "id=1" को ऐक्सेस करने का विकल्प होगा डिफ़ॉल्ट रूप से "id.1" होना चाहिए. दूसरे क्वेरी पैरामीटर "id=2" को ऐक्सेस करने के लिए, आपको इंडेक्स 2 यानी "id.2" का इस्तेमाल करना होगा. इसी तरह, तीसरे क्वेरी पैरामीटर "id=3" को ऐक्सेस करने के लिए, "id.3" का इस्तेमाल किया जा सकता है.

आपको ज़्यादा जानकारी यहां मिल सकती है.

संक्रमण की जांच

  1. गड़बड़ी के दौरान 'मैसेज असाइन करें' नीति, एट्रिब्यूट का नाम, और अमान्य इंडेक्स की पहचान करें. आपको गड़बड़ी के मैसेज में ये सभी आइटम मिल सकते हैं. उदाहरण के लिए, नीचे दी गई गड़बड़ी में, नीति का नाम GeneratingGeocodingRequest है, एट्रिब्यूट का नाम id है, और इंडेक्स 0 है:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    
  2. पुष्टि करें कि 'मैसेज असाइन करें' नीति की 'एक्सएमएल' नीति में इस्तेमाल किया गया एट्रिब्यूट का नाम और इंडेक्स, एट्रिब्यूट के नाम और गड़बड़ी के मैसेज में बताए गए इंडेक्स से मेल खाते हों (ऊपर दिया गया चरण #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>
    
  3. अगर इंडेक्स 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 मैनेजमेंट एपीआई के ज़रिए, एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता:

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> एलिमेंट में उसकी जानकारी नहीं दी गई है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकेगा, क्योंकि वैल्यू असाइन करने के लिए कोई मान्य वैरिएबल नाम मौजूद नहीं है. वैरिएबल का मान्य नाम डालना ज़रूरी है.

संक्रमण की जांच

खास एपीआई प्रॉक्सी में, मैसेज असाइन करने से जुड़ी सभी नीतियों की जांच करें, ताकि यह काम पूरा न हो पाए. अगर 'मैसेज असाइन करें' से जुड़ी कोई ऐसी नीति है जिसमें चाइल्ड एलिमेंट <Name> खाली है या <AssignVariable> एलिमेंट में उसके बारे में नहीं बताया गया है, तो यह गड़बड़ी की वजह है.

पहला उदाहरण: नीचे दी गई 'मैसेज असाइन करें' नीति में कोई <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>

रिज़ॉल्यूशन

पक्का करें कि 'मैसेज असाइन करें' नीति के <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>