سؤال

لقد وجدت بعض المواضيع المكسورة عبر الويب حيث يزعم الأشخاص أنهم قادرون على استخدام أشكال الاستلام في تزامن مع أنواع XlangMessage لتلقي ملفات مخطط الملفات المسطحة التي لا يمكن تجميعها في XSD محددة.

لقد حاولت ضبط messageType في شكل استلام مثل microsoft.xlangs.basetypes.xlangmessage ، ولكن هذا basetype غير قابل للتسلسل. هذا ثم يسبب خطأ في البناء.

هل هناك نوع كائن يمكنه التقاط كلا من رسائل XML التي تم تشكيلها جيدًا وكذلك XML المشوهة والملفات المسطحة غير المجمعة؟

هل كانت مفيدة؟

المحلول

ردا على سؤالك المباشر بالخط العريض - نعم ، النوع الذي تتبعه هو System.Xml.XmlDocument.

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

يمكن أن تتلقى هذه الرسالة عند تعيينها إلى شكل استلام أي حمولة حمولة ، على سبيل المثال ، غالبًا ما استخدمت هذا لتمرير تنسيقات مثل ملفات .pdf من خلال BizTalk حيث لم أكن بحاجة إلى تحليلها. ومع ذلك ، كن على دراية بأنه على الرغم من الاسم ، فإن ما لديك هنا ليس XML وسيؤدي إلى كل أنواع المشكلات إذا حاولت علاجها على هذا النحو.


للتغلب على سؤالك قليلاً - هل تحاول إجراء نوع من الأخطاء في التعامل مع التزامن؟

إذا كنت في ذلك الوقت في رمز معالجة الأخطاء لديك ، يمكنك فقط الحصول على شكل يستقبل رسالة من النوع XmlDocument من خلال تعيين تعبير المرشح الخاص به على ErrorReport.ErrorType == "فشل" والذي يرتبط بمنفذ مقيد مباشر متصل بمربع الرسالة.

لقد وجدت أنه من المفيد أن يكون لديك شكلين تلقيين ، أحدهما للقبض على فشل التوجيه ، عندما يكون لدينا أي حمولة محتملة ، والآخر للاشتراك في ظرف غلاف خطأ في الأنواع القوية التي تحددها وتمررها من أوركسترياتك الأخرى الأشكال.

هذا يعني أنه يمكنك بعد ذلك بناء مكان مركزي واحد للتعامل مع جميع الاستثناءات.


إذا لم ترها ، فهناك لطيف بعد تشارلز يونغ قد تصف شيئًا مشابهًا لما تحاول القيام به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top