تحديد وحلّ المشاكل المتعلقة بخطأ إعادة ضبط وقت تشغيل الحصة

أنت تعرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

InvalidRLPolicy

رمز الخطأ

policies.resetquota.InvalidRLPolicy

نص الاستجابة للخطأ

{
    "fault": {
        "faultstring": "Invalid rate limit policy quota_policy_name",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

مثال على رسالة الخطأ

{
    "fault": {
        "faultstring": "Invalid rate limit policy MyQuotaPolicy",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

السبب

يحدث هذا الخطأ إذا لم يتم تحديد سياسة الحصة المحدّدة في عنصر <Quota> من سياسة إعادة ضبط الحصة في خادم وكيل واجهة برمجة التطبيقات. عنصر <Quota> إلزامي ويحدّد سياسة الحصة المستهدَفة التي يجب تعديل عدادها من خلال سياسة إعادة ضبط الحصة. يجب إنشاء سياسة الحصة المستهدَفة هذه وتحديدها ضمن الوكيل نفسه لواجهة برمجة التطبيقات، ويجب أن تكون متاحة أثناء عملية المعالجة.

على سبيل المثال، لنفترض أنّه تمّ تعريف العنصر<Quota> كما هو موضّح أدناه، ولكن إذا لم يتمّ تعريف MyQuotaPolicy في وكيل واجهة برمجة التطبيقات، سيظهر لك الخطأ أعلاه.

<Quota name="MyQuotaPolicy">

التشخيص

  1. حدِّد اسم سياسة الحصة غير الصالح المحدَّد في سياسة إعادة ضبط حصة. يمكنك العثور على اسم سياسة الحصة من سلسلة الأخطاء. على سبيل المثال، في سلسلة الأخطاء التالية، اسم سياسة الحصة هو MyQuotaPolicy:.

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. راجِع كل سياسات إعادة ضبط الحصة في "وكيل واجهة برمجة التطبيقات" الذي حدث فيه الرفض. حدِّد سياسة إعادة ضبط الحصة المحدّدة التي تتطابق فيها سياسة الحصة المحدّدة ضمن العنصر الإلزامي <Quota> مع الاسم المحدّد في الخطوة 1 أعلاه.

    على سبيل المثال، تحدّد سياسة إعادة ضبط الحصة التالية سياسة حصة باسم MyQuotaPolicy، والتي تتطابق مع ما هو وارد في سلسلة الأخطاء:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
           <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    
    
  3. حدِّد ما إذا تم إنشاء سياسة الحصة هذه وتحديدها ضمن الوكيل نفسه لواجهة برمجة التطبيقات. إذا لم تكن سياسة الحصة متوفّرة في خادم الوكيل لواجهة برمجة التطبيقات نفسه، هذا هو سبب حدوث الخطأ.

    في المثال أعلاه، من المفترض أن تكون سياسة الحصة MyQuotaPolicy متوفّرة في العملية قبل تنفيذ سياسة إعادة ضبط الحصة Reset_Quota_Demo.

    ستتلقّى رمز الخطأ بسبب عدم توفّر سياسة الحصة MyQuotaPolicy في مسار العملية.

"errorcode": "policies.resetquota.InvalidRLPolicy"

الدقة

تأكَّد من أنّ سياسة الحصة المُعلَن عنها في عنصر <Quota> محدّدة في الخادم الوكيل لواجهة برمجة التطبيقات. يجب أن تكون سياسة "الحصة المستهدَفة" متاحة عند تنفيذ سياسة "إعادة ضبط الحصة".

FailedToResolveAllowCountRef

رمز الخطأ

policies.resetquota.FailedToResolveAllowCountRef

نص الاستجابة للخطأ

Failed to resolve allow count reference reference_name for identifier identifier_name
in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision:
revision_number;Environment:env_name;Organization:org_name

مثال على رسالة الخطأ

Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo

سيكون الخطأ الذي يظهر للعميل هو: policies.ratelimit.QuotaViolation.

السبب

يحدث هذا الخطأ إذا تعذّر تحويل المرجع إلى المتغيّر الذي يحتوي على عدد الأذونات في عنصر <Allow> من السياسة إلى قيمة. هذا العنصر إلزامي ويحدّد المبلغ المطلوب خفضه في عداد الحصة.

التشخيص

  1. حدِّد سياسة "إعادة ضبط الحصة" التي حدث فيها الخطأ واسم المتغيّر المرجعي الذي لا يمكن حلّه. يمكنك العثور على هذين العنصرَين في ردّ الخطأ.

    على سبيل المثال، في سلسلة الأخطاء التالية، اسم السياسة هو ResetQuota والمرجع هو request.header.allowcount:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    
  2. في ملف XML لسياسة "إعادة ضبط الحصة" التي تعذّر تنفيذها، تأكَّد من أنّ اسم المتغيّر المرجعي المستخدَم يتطابق مع الاسم المرجعي المحدّد في ردّ الخطأ (الخطوة 1 أعلاه).

    على سبيل المثال، تضبط السياسة التالية العنصر بالإشارة المُسمّاة request.header.allowcount، والتي تتطابق مع ما ورد في الخطأ:

    <ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota">
        <DisplayName>ResetQuota</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
            <Identifier name="identifierName">
                <Allow ref="request.header.allowcount"/>
            </Identifier>
        </Quota>
    </ResetQuota>
    
  3. حدِّد ما إذا كان المتغيّر المرجعي محدّدًا ومتاحًا في العملية التي يتم فيها تنفيذ سياسة "إعادة ضبط الحصة".

  4. إذا كان المتغيّر:

    1. خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم تنفيذ السياسة فيه)
    2. لا يمكن حلّه (لم يتم تحديده)

    هذا هو سبب الخطأ.

    في المثال أعلاه، من المفترض أن يتم استرداد قيمة العدد المسموح به في <Allow>العنصر من عنوان الطلب الذي يحمل الاسم allowcount. ومع ذلك، تعذّر على Edge معالجة request.header.allowcount. يحدث ذلك في حال عدم تمرير عنوان الرأس allowcount كجزء من طلب واجهة برمجة التطبيقات.

    في ما يلي نموذج لطلب بيانات من واجهة برمجة التطبيقات لا يمرّر العنوان allowcount كجزء من الطلب:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    بما أنّه لا يتم تمرير العنوان allowcount كجزء من الطلب، فإنّ المتغيّر request.header.allowcount المستخدَم في العنصر <Allow> في سياسة إعادة ضبط الحصة أعلاه غير محدّد، وبالتالي لا يمكن حلّه. لذلك ستتلقى استجابة الخطأ:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    

الدقة

تأكَّد من توفُّر أو تحديد المتغيّر المشار إليه في العنصر <Allow> وتوفّره في المسار المحدّد الذي يتم فيه تنفيذ سياسة إعادة ضبط حصة.

لتصحيح المثال المعروض أعلاه، يمكنك تعديل الطلب لتضمين العنوان allowcount كما هو موضّح أدناه:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"

FailedToResolveRLPolicy

رمز الخطأ

policies.resetquota.FailedToResolveRLPolicy

نص الاستجابة للخطأ

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

مثال على رسالة الخطأ

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

السبب

يحدث هذا الخطأ إذا تعذّر حلّ المتغيّر الذي تشير إليه سمة ref في العنصر <Quota>.

على سبيل المثال، إذا تم ضبط سمة ref على request.header.quotapolicy في عنصر <Quota> ولكنها غير متاحة في عملية التوسّط لـ API، ستظهر لك الخطأ أعلاه.

<Quota ref="request.header.quotapolicy">

التشخيص

  1. راجِع كلّ سياسة من سياسات "إعادة ضبط الحصة" في "خادم وكيل واجهة برمجة التطبيقات" الذي حدث فيه تعذُّر ، وحدِّد سياسة "إعادة ضبط الحصة" التي يتعذّر فيها حلّ اسم متغيّر المرجع المحدد في عنصر <Quota> بشكلٍ صحيح.

  2. حدِّد ما إذا كان المتغيّر محدّدًا ومتاحًا في العملية التي تنفِّذ سياسة "إعادة ضبط الحصة".

  3. إذا كان المتغيّر:

    1. خارج النطاق (لا تتوفّر في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
    2. لا يمكن حلّه (لم يتم تحديده)

    هذا هو سبب الخطأ.

    في المثال الموضّح أدناه، من المفترض أن يتم retrievingاسم سياسة الحصة المستهدَفة من عنوان الطلب الذي يحمل الاسم quotapolicy. ومع ذلك، لا يمكن لمتصفّح Edge حلّ request.header.quotapolicy. ويحدث ذلك في حال عدم تمرير العنوان quotapolicy كجزء من طلب البيانات من واجهة برمجة التطبيقات.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota ref="request.header.quotapolicy">
            <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    

    في ما يلي نموذج لطلب واجهة برمجة التطبيقات لا يُرسل العنوان quotapolicy كأحد أجزاء الطلب:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    بما أنّه لم يتمّ تمرير العنوان quotapolicy" كجزء من الطلب، لن يتم تحديد المرجع request.header.quotapolicy المستخدَم في العنصر <Quota> ضمن "سياسة حصة إعادة الضبط" أعلاه ولا يمكن حلّه. ونتيجةً لذلك، تتلقّى ردّ الخطأ:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

الدقة

يجب التأكّد من أنّ السمة ref المشار إليها في العنصر <Quota> يتم حلها في وقت التشغيل وتكون متوفّرة في المسار المحدّد الذي يتم فيه تنفيذ سياسة إعادة ضبط الحصة.

لتصحيح المثال المعروض أعلاه، يمكنك تعديل الطلب لتضمين العنوان quotapolicy كما هو موضّح أدناه:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"