مشاركة عبر


استثناءات Azure Relay

تسرد هذه المقالة بعض الاستثناءات التي قد يتم إنشاؤها بواسطة واجهات برمجة تطبيقات Azure Relay. يخضع هذا المرجع للتغيير، لذا تحقق مرة أخرى من وجود تحديثات.

فئات الاستثناء

تنشئ واجهات برمجة تطبيقات الترحيل استثناءات قد تندرج في الفئات التالية. كما يتم سرد الإجراءات المقترحة التي يمكنك اتخاذها للمساعدة في حل الاستثناءات.

أنواع الاستثناءات

يسرد الجدول التالي أنواع استثناءات المراسلة وأسبابها. كما تلاحظ الإجراءات المقترحة التي يمكنك اتخاذها للمساعدة في حل الاستثناءات.

نوع الاستثناء الوصف الإجراء المقترح ملاحظة حول إعادة المحاولة التلقائية أو الفورية
المهلة لم يستجب الخادم للعملية المطلوبة خلال الوقت المحدد، والذي يتم التحكم فيه بواسطة OperationTimeout. ربما يكون الخادم قد أكمل العملية المطلوبة. يمكن أن يحدث ذلك بسبب تأخير الشبكة أو أي بنية أساسية أخرى. تحقق من حالة النظام بحثا عن التناسق، ثم أعد المحاولة، إذا لزم الأمر. راجع TimeoutException . قد تساعد إعادة المحاولة في بعض الحالات؛ إضافة منطق إعادة المحاولة إلى التعليمات البرمجية.
عملية غير صحيحة عملية المستخدم المطلوبة غير مسموح بها داخل الخادم أو الخدمة. انظر رسالة الاستثناء للحصول على التفاصيل. تحقق من التعليمة البرمجية والوثائق. تأكد من أن العملية المطلوبة صالحة. إعادة المحاولة لا تساعد.
تم إلغاء العملية جرت محاولة لاستدعاء عملية على عملية تم إغلاقه بالفعل أو إجهاضه أو التخلص منه. في حالات نادرة، يتم بالفعل التخلص من العملية المحيطة. تحقق من التعليمة البرمجية وتأكد من أنه لا يستدعي عمليات على كائن تم التخلص منه. إعادة المحاولة لا تساعد.
الوصول غير المصرح به تعذر على كائن TokenProvider الحصول على رمز مميز أو الرمز المميز غير صالح أو لا يحتوي الرمز المميز على المطالبات المطلوبة لتنفيذ العملية. تأكد من إنشاء موفر الرمز المميز بالقيم الصحيحة. تحقق من تكوين خدمة التحكم بالوصول. قد تساعد إعادة المحاولة في بعض الحالات؛ إضافة منطق إعادة المحاولة إلى التعليمات البرمجية.
استثناء الوسيطة،
الوسيطة Null،
وسيطة خارج النطاق
حدثت مشكلة واحدة أو أكثر من المشكلات التالية:
هناك وسيطة واحدة أو أكثر غير صالحة تم توفيرها للطريقة.
يحتوي URI الذي تم توفيره إلى NamespaceManager أو Create على مقطع مسار واحد أو أكثر.
مخطط URI المقدم إلى NamespaceManager أو Create غير صالح.
قيمة الخاصية أكبر من 32 كيلوبايت.
تحقق من كود الاستدعاء وتأكد من صحة المعطيات. إعادة المحاولة لا تساعد.
الخادم مشغول الخدمة غير قادرة على معالجة الطلب في الوقت الحالي. يمكن للعميل الانتظار لفترة من الوقت، ثم إعادة محاولة العملية. قد يعيد العميل المحاولة بعد فاصل زمني محدد. إذا كانت إعادة المحاولة تؤدي إلى استثناء مختلف، فتحقق من سلوك إعادة المحاولة لهذا الاستثناء.
تم تجاوز الحصة النسبية وصل كيان المراسلة إلى الحد الأقصى للحجم المسموح به. قم بإنشاء مساحة في الكيان من خلال تلقي رسائل من الكيان أو قوائمه الفرعية. راجع QuotaExceededException. قد تساعد إعادة المحاولة إذا تمت إزالة الرسائل في هذه الأثناء.
تم تجاوز حجم الرسالة تتجاوز البيانات الأساسية للرسالة حد 256 كيلوبايت. حد 256 كيلوبايت هو إجمالي حجم الرسالة. يمكن أن يتضمن إجمالي حجم الرسالة خصائص النظام وأي حمل إضافي من Microsoft .NET. قم بتقليل حجم بيانات الرسالة الأساسية، ثم أعد محاولة العملية. إعادة المحاولة لا تساعد.

QuotaExceededException

يشير QuotaExceededException إلى أنه تم تجاوز حصة كيان معين.

بالنسبة إلى Relay، يلتف هذا الاستثناء System.ServiceModel.QuotaExceededException، الذي يشير إلى أنه تم تجاوز الحد الأقصى لعدد المستمعين لنقطة النهاية هذه. يشار إليه في قيمة MaximumListenersPerEndpoint لرسالة الاستثناء.

TimeoutException

يشير TimeoutException إلى أن العملية التي بدأها المستخدم تستغرق وقتاً أطول من مهلة العملية.

تحقق من قيمة الخاصية ServicePointManager.DefaultConnectionLimit . يمكن أن يؤدي الوصول إلى هذا الحد أيضا إلى TimeoutException.

بالنسبة إلى الترحيل، قد تتلقى استثناءات المهلة عند فتح اتصال مرسل الترحيل لأول مرة. هناك سببان شائعان لهذا الاستثناء:

  • قد تكون قيمة OpenTimeout صغيرة جدا (ولو بجزء صغير من الثانية).
  • قد يكون مستمع الترحيل المحلي غير مستجيب (أو قد يواجه مشكلات في قواعد جدار الحماية تمنع المستمعين من قبول اتصالات عميل جديدة)، وتكون قيمة OpenTimeout أقل من حوالي 20 ثانية.

مثال:

'System.TimeoutException’: The operation did not complete within the allotted timeout of 00:00:10.
The time allotted to this operation may have been a portion of a longer timeout.

أسباب شائعة

هناك سببان شائعان لهذا الخطأ:

  • تكوين غير صحيح

    قد تكون مهلة العملية صغيرة جدا بالنسبة لحالة التشغيل. القيمة الافتراضية لمهلة العملية في SDK للعميل هي 60 ثانية. تحقق لمعرفة ما إذا كانت القيمة في التعليمات البرمجية معينة إلى شيء صغير جدا. يمكن أن يؤثر استخدام وحدة المعالجة المركزية وحالة الشبكة على الوقت الذي تستغرقه العملية لإكمالها. من الجيد عدم تعيين مهلة العملية إلى قيمة صغيرة جدا.

  • خطأ عابر في الخدمة

    في بعض الأحيان، قد تواجه خدمة الترحيل تأخيرات في معالجة الطلبات. قد يحدث ذلك، على سبيل المثال، خلال فترات ارتفاع نسبة استخدام الشبكة. إذا حدث ذلك، أعد محاولة العملية بعد تأخير، حتى تنجح العملية. إذا استمرت نفس العملية في الفشل بعد محاولات متعددة، فتحقق من موقع حالة خدمة Azure لمعرفة ما إذا كانت هناك انقطاعات معروفة في الخدمة.

ConnectionLostException - NameRenewalFailed

العلامات

يتلقى عميلك الاستثناء: Microsoft.Azure.Relay.ConnectionLostException : InternalServerError: NameRenewalFailed.

السبب

تعيد خدمة Azure Relay تشغيل اتصالات وحدة الاستماع كل 24 ساعة. فهذا السلوك حسب التصميم. تفصل خدمة Azure Relay اتصالا نشطا للمستمع كل 24 ساعة، وسيعيد وحدة الاستماع الاتصال بالخادم باستخدام آلية إعادة المحاولة.

نوع الحل

لا يوجد أي إجراء من جانبك حيث يعيد وحدة الاستماع الاتصال بالخادم تلقائيا. إذا لاحظت أن وحدة الاستماع الخاصة بك لا تتصل مرة أخرى، أرسل تذكرة إلى فريق الدعم.

الخطوات التالية