ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
من خلال توفير كائن ProxyError
، تسمح Azure API Management للناشرين بالاستجابة لحالات الخطأ التي قد تحدث أثناء معالجة الطلبات. يتم الوصول إلى الكائن ProxyError
من خلال الخاصية Context.LastError ويمكن استخدامه بواسطة النُهج في قسم النهجon-error
. توفر هذه المقالة مرجعاً لقدرات معالجة الأخطاء في Azure API Management.
تنقسم النُهج في Azure API Management إلى أقسام inbound
وbackend
وoutbound
وon-error
كما هو موضح في المثال التالي.
<policies>
<inbound>
<!-- statements to be applied to the request go here -->
</inbound>
<backend>
<!-- statements to be applied before the request is
forwarded to the backend service go here -->
</backend>
<outbound>
<!-- statements to be applied to the response go here -->
</outbound>
<on-error>
<!-- statements to be applied if there is an error
condition go here -->
</on-error>
</policies>
أثناء معالجة الطلب، يتم تنفيذ الخطوات المضمنة جنباً إلى جنب مع أي نهج يدخل في نطاق الطلب. في حالة حدوث خطأ، تنتقل المعالجة فوراً إلى قسم نهج on-error
.
يمكن استخدام قسم نهج on-error
في أي نطاق. يمكن لناشري واجهة برمجة التطبيقات تكوين سلوك مخصص مثل تسجيل الخطأ لمراكز الأحداث أو إنشاء استجابة جديدة للعودة إلى المتصل.
ملاحظة
قسم on-error
غير موجود في النُهج بشكل افتراضي. لإضافة قسم on-error
إلى إحدى النُهج، استعرض للوصول إلى النهج المطلوب في محرر النهج وقم بإضافته. لمزيد من المعلومات حول نُهج التكوين، راجع Policies in API Management.
إذا لم يكن هناك قسم on-error
، فسيتلقى المتصلون 400 أو 500 رسالة استجابة HTTP في حالة حدوث حالة خطأ.
يمكن استخدام النُهج التالية في قسم نهج on-error
.
- اختر
- تعيين متغير
- البحث والاستبدال
- إرجاع الاستجابة
- تعيين العنوان
- أسلوب التعيين
- تعيين الحالة
- إرسال الطلب
- إرسال طلب باتجاه واحد
- تسجيل الدخول إلى مركز الأحداث
- json إلى xml
- xml إلى json
- تقييد التزامن
- استجابة وهمية
- إعادة المحاولة
- التتبع
عند حدوث خطأ وانتقال عنصر التحكم إلى قسم نهج on-error
، يتم تخزين الخطأ في خاصية Context.LastError، والتي يمكن الوصول إليها من خلال النُهج في قسم on-error
. يتضمن آخر خطأ الخصائص التالية.
Name | كتابة | الوصف | مطلوب |
---|---|---|---|
Source |
سلسلة | يسمي العنصر الذي حدث فيه الخطأ. قد تكون إما نهج أو اسم خطوة مسار مضمن. | نعم |
Reason |
سلسلة | رمز خطأ سهل الاستخدام للآلة، والذي يمكن استخدامه في معالجة الأخطاء. | لا |
Message |
سلسلة | وصف خطأ يمكن قراءته من قبل الإنسان. | نعم |
Scope |
سلسلة | اسم النطاق الذي حدث فيه الخطأ. | لا |
Section |
سلسلة | اسم القسم الذي حدث فيه الخطأ. القيم المحتملة: "الواردة"، "الخلفية"، "الصادرة"، أو "على خطأ". | لا |
Path |
سلسلة | يحدد التسلسل الهرمي للنهج المتداخل، على سبيل المثال "choose[3]\when[2]". تتم فهرسة مثيلات متعددة لنهج متداخل من 1. | لا |
PolicyId |
سلسلة | قيمة السمة id ، إذا حددها العميل، في النهج الذي حدث فيه الخطأ |
لا |
تلميح
يمكنك الوصول إلى التعليمة البرمجية للحالة من خلال Context.Response.StatusCode.
ملاحظة
تحتوي جميع النُهج على سمة اختيارية id
يمكن إضافتها إلى عنصر جذر النهج. إذا كانت هذه السمة موجودة في نهج عند حدوث حالة خطأ، فيمكن استرداد قيمة السمة باستخدام الخاصية context.LastError.PolicyId
.
تم تحديد الأخطاء التالية مسبقاً لظروف الخطأ التي يمكن أن تحدث أثناء تقييم خطوات المعالجة المضمنة.
المصدر | الشرط | السبب | رسالة |
---|---|---|---|
التكوين | لا يتطابق Uri مع أي واجهة برمجة تطبيقات أو عملية | لم يتم العثور على العملية | غير قادر على مطابقة الطلب الوارد بعملية. |
التخويل | مفتاح الاشتراك غير متوفر | مفتاح الاشتراك غير موجود | تم رفض الوصول بسبب فقدان مفتاح الاشتراك. تأكد من تضمين مفتاح الاشتراك عند تقديم طلبات إلى واجهة برمجة التطبيقات هذه. |
التخويل | قيمة مفتاح الاشتراك غير صالحة | مفتاح الاشتراك غير صالح | تم رفض الوصول بسبب مفتاح اشتراك غير صالح. تأكد من توفير مفتاح صالح للاشتراك النشط. |
متعدد | تم إحباط اتصال المتلقين للمعلومات (من عميل إلى بوابة API Management) من قبل العميل أثناء تعليق الطلب | فشل اتصال العميل | متعدد |
متعدد | لم يتم إنشاء اتصال المصدر (من بوابة API Management إلى خدمة الواجهة الخلفية) أو تم إحباطه بواسطة الواجهة الخلفية | فشل الاتصال الخلفي | متعدد |
متعدد | حدث استثناء في وقت التشغيل أثناء تقييم تعبير معين | فشل تقييم قيمة التعبير | متعدد |
تم تحديد الأخطاء التالية مسبقاً لظروف الخطأ التي يمكن أن تحدث أثناء تقييم النهج.
المصدر | الشرط | السبب | رسالة |
---|---|---|---|
rate-limit | تم تجاوز حد المعدل | تم تجاوز حد المعدل | تم تجاوز حد المعدل |
الحصة النسبية | تم تجاوز الحصة النسبية | QuotaExceeded | نفاذ الحصة النسبية لمقدار المكالمات. سيتم تجديد الحصة النسبية في xx:xx:xx. -أو- نفاد الحصة النسبية للنطاق الترددي. سيتم تجديد الحصة النسبية في xx:xx:xx. |
jsonp | قيمة معلمة رد الاتصال غير صالحة (تحتوي على أحرف خاطئة) | معلمة رد الاتصال غير صالحة | قيمة معلمة رد الاتصال {callback-parameter-name} ليست معرّف JavaScript صالح. |
عامل تصفية IP | فشل تحليل عنوان IP الخاص بالمتصل من الطلب | فشل في تحليل IP المتصل | فشل في إنشاء عنوان IP للمتصل. تم رفض الوصول. |
عامل تصفية IP | عنوان IP المتصل ليس في القائمة المسموح بها | Ip المتصل غير مسموح | غير مسموح بعنوان IP للمتصل {ip-address}. تم رفض الوصول. |
عامل تصفية IP | عنوان IP المتصل في قائمة محظورة | حظر IP المتصل | تم حظر عنوان IP المتصل. تم رفض الوصول. |
check-header | لم يتم تقديم العنوان المطلوب أو القيمة مفقودة | لم يتم العثور على العنوان | لم يتم العثور على العنوان {header-name} في الطلب. تم رفض الوصول. |
check-header | لم يتم تقديم العنوان المطلوب أو القيمة مفقودة | قيمة العنوان غير مسموح بها | غير مسموح بقيمة {header-name} الخاصة بـ {header-value}. تم رفض الوصول. |
تحقق من صحة jwt | الرمز المميز لـ Jwt مفقود في الطلب | TokenNotPresent | JWT غير موجود. |
تحقق من صحة jwt | فشل التحقق من صحة التوقيع | توقيع الرمز غير صالح | <رسالة من مكتبة jwt>. تم رفض الوصول. |
تحقق من صحة jwt | جمهور غير صالح | الجمهور المميز غير مسموح به | <رسالة من مكتبة jwt>. تم رفض الوصول. |
تحقق من صحة jwt | مُصدر غير صالح | مُصدر الرمز غير مسموح به | <رسالة من مكتبة jwt>. تم رفض الوصول. |
تحقق من صحة jwt | انتهت صلاحية الرمز المميز | انتهت صلاحية الرمز المميز | <رسالة من مكتبة jwt>. تم رفض الوصول. |
تحقق من صحة jwt | لم يتم حل مفتاح التوقيع بواسطة معرف | لم يتم العثور على مفتاح توقيع الرمز المميز | <رسالة من مكتبة jwt>. تم رفض الوصول. |
تحقق من صحة jwt | المطالبات المطلوبة مفقودة من الرمز المميز | لم يتم العثور على مطالبة الرمز | يفتقد رمز JWT المميز المطالبات التالية: <c1>، <c2>، ..… تم رفض الوصول. |
تحقق من صحة jwt | قيم المطالبة غير متطابقة | قيمة مطالبة الرمز غير مسموح بها | غير مسموح بالمطالبة بقيمة {Claim-name} بقيمة {Claim-value}. تم رفض الوصول. |
تحقق من صحة jwt | حالات فشل التحقق الأخرى | Jwt غير صالح | <رسالة من مكتبة jwt> |
طلب إعادة توجيه أو طلب إرسال | لم يتم تلقي رمز حالة استجابة HTTP والعناوين من الخلفية ضمن المهلة المكونة | المهلة | متعدد |
تعيين نهج API إلى:
<policies>
<inbound>
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<set-header name="ErrorSource" exists-action="override">
<value>@(context.LastError.Source)</value>
</set-header>
<set-header name="ErrorReason" exists-action="override">
<value>@(context.LastError.Reason)</value>
</set-header>
<set-header name="ErrorMessage" exists-action="override">
<value>@(context.LastError.Message)</value>
</set-header>
<set-header name="ErrorScope" exists-action="override">
<value>@(context.LastError.Scope)</value>
</set-header>
<set-header name="ErrorSection" exists-action="override">
<value>@(context.LastError.Section)</value>
</set-header>
<set-header name="ErrorPath" exists-action="override">
<value>@(context.LastError.Path)</value>
</set-header>
<set-header name="ErrorPolicyId" exists-action="override">
<value>@(context.LastError.PolicyId)</value>
</set-header>
<set-header name="ErrorStatusCode" exists-action="override">
<value>@(context.Response.StatusCode.ToString())</value>
</set-header>
<base />
</on-error>
</policies>
وسيؤدي إرسال طلب غير مصرح به إلى الاستجابة التالية:
لمزيد من المعلومات حول العمل مع النُهج، راجع:
- البرنامج التعليمي: تحويل واجهة برمجة التطبيقات الخاصة بك وحمايتها
- Policy reference لقائمة كاملة من بيانات النُهج وإعداداتها
- تعبيرات النهج
- تعيين النهج أو تحريرها
- إعادة استخدام التكوينات الخاصة بالنهج
- مستودع القصاصات البرمجية للنهج
- مجموعة أدوات نهج إدارة واجهة برمجة تطبيقات Azure
- نهج المؤلف باستخدام Microsoft Copilot في Azure