أنت تعرض مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
InvalidMessageWeight
رمز الخطأ
policies.ratelimit.InvalidMessageWeight
نص استجابة الخطأ
{ "fault": {jdoe "faultstring": "Invalid message weight value [invalid_value]", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
مثال على رسالة خطأ
{ "fault": { "faultstring": "Invalid message weight value 1.5", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
السبب
يحدث هذا الخطأ إذا كانت القيمة المحدّدة للعنصر <MessageWeight>
هي
متغير التدفق غير صالح (قيمة لا تمثل عددًا صحيحًا).
على سبيل المثال، إذا كانت قيمة متغير التدفق المحددة للسمة <MessageWeight>
العنصر 1.5 (قيمة ليست عددًا صحيحًا)، فسيحدث الخطأ.
التشخيص
حدِّد القيمة غير الصالحة المستخدَمة للعنصر
<MessageWeight>
في الارتفاع. سياسة الاعتقال يمكنك العثور على هذه المعلومات في العنصرfaultstring
من خطأ. على سبيل المثال، في الخطأ التالي، تُستخدم القيمة غير الصالحة قيمة العنصر<MessageWeight>
هي1.5
:"faultstring": "Invalid message weight value 1.5"
راجِع جميع سياسات إيقاف الطلبات المرتفعة في خادم وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه تعذُّر. يمكن أن تكون هناك سياسة واحدة أو أكثر من سياسات الاعتقالات المرتفعة التي ويتم تحديد العنصر
<MessageWeight>
.على سبيل المثال، تحدّد السياسة التالية قيمة
<MessageWeight>
. من خلال متغيّر تدفق يسمىmessage_weight:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>
تحديد قيمة المتغيّر المستخدَم في عنصر
<MessageWeight>
الخاص سياسات الاعتقالات الشاهقة المحددة. يمكن استخراج قيمة متغيّر مسار الإحالة الناجحة من عناوين HTTP أو مَعلمات طلب البحث أو الحمولة في طلب XML أو JSON، أو يمكن تحديدها في سياسة أخرى.- حدِّد موقع الرمز داخل الخادم الوكيل لواجهة برمجة التطبيقات، حيث تم تحديد المتغيّر أولاً.
- بمجرد معرفة السياسة التي يتم فيها تعريف المتغير مملوءة أولاً، فتحقق من كيفية تعيين قيمة المتغير.
- إذا كانت قيمة متغيّر التدفق تتطابق مع القيمة المحدَّدة في الخطوة رقم 1 أعلاه، فهذا هو سبب الخطأ.
على سبيل المثال، لنفترض أنّه يتم استخدام سياسة JavaScript قبل "الحظر العاطفي" سياسة لضبط المتغير
message_weight
استنادًا إلى طريقة الطلب كما هو موضح أدناه:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
لاحظ أن قيمة المتغير
message_weight
هي1.5
وهي قيمة غير صالحة (عددا غير صحيح).
الدقة
تأكَّد من أنّ قيمة العنصر MessageWeight
هي قيمة صالحة (عدد صحيح).
).
لتصحيح المثال الموضح أعلاه، يمكنك تعديل قيمة المتغير
message_weight
في JavaScript ليكون عددًا صحيحًا:
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveSpikeArrestRate
رمز الخطأ
policies.ratelimit.FailedToResolveSpikeArrestRate
نص استجابة الخطأ
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
مثال على رسالة خطأ
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
السبب
يحدث هذا الخطأ إذا كان المرجع إلى المتغيّر الذي يحتوي على إعداد المعدّل
داخل العنصر <Rate>
لا يمكن تحليلها إلى قيمة داخل Spike Arrest
. يُعد هذا العنصر إلزاميًا ويُستخدَم لتحديد الارتفاع المفاجئ في معدل الاعتقال في
على شكل {int}pm
أو {int}ps
. على سبيل المثال، قد تكون قيمة {int}pm
500pm
،
وهو ما يعني 500 اتصال في الدقيقة. وبالمثل، تعني القيمة 10ps
10 مكالمات لكل
ثانيًا.
التشخيص
حدد سياسة الاعتقال المرتفع التي حدث فيها الخطأ واسم المرجع الذي لا يمكن حله بشكل صحيح. يمكنك العثور على كلا العنصرَين في عنصر سلسلة الخطأ في استجابة الخطأ.
على سبيل المثال، في سلسلة الخطأ التالية، يكون اسم السياسة هو
SpikeArrest_AuthProxy
والمرجع هوrequest.header.rate
:"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"
في ملف XML الذي تعذّر تقديمه المتعلّق بسياسة Spike Arrest، تحقَّق من أنّ اسم المرجع مستخدم يتطابق مع اسم المرجع المحدد في سلسلة الخطأ (الخطوة رقم 1 أعلاه). ** **
على سبيل المثال، تضبط السياسة التالية عنصر
باستخدام المرجع الذي يحمل الاسم request.header.rate
، والذي يتطابق مع المحتوى الوارد في سلسلة الأخطاء:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>
حدِّد ما إذا كان المتغيّر محدّدًا ومتاحًا في التدفق الذي يتم تنفيذ سياسة الاعتقال المرتفع.
إذا كان المتغيّر إما:
- خارج النطاق (لا تتوفّر خلال المسار المحدّد الذي يتم فيه تطبيق السياسة) تم تنفيذها) أو
- يتعذّر حلها (غير محدّد)
فهذا هو سبب الخطأ.
في المثال الوارد أعلاه، تشير قيمة الارتفاع المفاجئ في معدّل الاعتقال في
<Rate>
من المفترض أن يتم استرداد العنصر من عنوان الطلب المسمى rate. ومع ذلك، يتعذّر على Edge حلّ المشكلة request.header.rate. يحدث هذا إذا لم يتم تمرير معدّل العنوان كجزء من طلب البيانات من واجهة برمجة التطبيقات.في ما يلي نموذج لطلب بيانات من واجهة برمجة التطبيقات لا يُرسل العنوان rate كجزء من الطلب:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json"
بما أنّه لم يتم تمرير معدّل العنوان كجزء من الطلب، يُرجى الرجوع إلى يتم استخدام request.header.rate في العنصر
<Rate>
ضمن الارتفاع المفاجئ أعلاه سياسة الاعتقال غير محدّدة، وبالتالي لا يمكن حلّها. لذلك ستتلقى رمز الخطأ:policies.ratelimit.FailedToResolveSpikeArrestRate
الدقة
تأكَّد من توفُّر أو تحديد المتغيّر المشار إليه في العنصر <Rate>
.
وتكون متاحة في التدفق المحدّد، حيث يتم تنفيذ سياسة الاعتقال المرتفع.
لتصحيح المثال أعلاه، يمكنك تعديل الطلب لتضمين العنوان rate كما هو موضّح أدناه:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"