أي شخص رأى هذه المشكلة مع protobuf-net على net.msmq
-
26-09-2019 - |
سؤال
أرى مشكلة حيث أرسل رسائل كبيرة عبر wcf net.msmq باستخدام protobuf-net وأحصل على الخطأ التالي:
ألقى Formatter استثناء أثناء محاولته تخلص من الرسالة: خطأ في تفضيل هيئة طلب الطلب للتشغيل "DeliverData". العنصر النهائي "proto" من مساحة الاسم "http: // mynamespace' مُتوقع
إذا كان حجم الرسالة أقل من 16 ألفًا ، فهو يعمل
إذا قمت بإزالة protobuf-net ، فهو يعمل
إذا قمت بالتبديل إلى Basichttp ، فهو يعمل
ولكن إذا كان حجم الرسالة أكثر من 16 كيلو ، باستخدام protobuf-net ، عبر net.msmq ، أحصل على الخطأ. لقد قمت بتعيين MaxBufferPoolsize و MaxReceivedMessagesizages كبير بما فيه الكفاية ، فهو لا يساعد.
هل راى احد اخر هذا؟ هل استخدم أي شخص آخر protobuf-net + net.msmq لرسائل كبيرة وحصل عليه للعمل؟
المحلول
أعتذر عن التأخير - عطلة وما إلى ذلك ، لم أر مشكلة محددة في ذلك. حقيقة أنه ينادي "العنصر النهائي" يشير إلى أنه في طبقة XML في ذلك الوقت (وهو قبل Protobuf-Net هل حقا يتورط). هل لديك أي طريقة يمكنني إعادة إنتاج هذا بشكل موثوق؟
بعد التحقيق ، يبدو أن المشكلة هنا هي قارئ WCF ؛ يبدو أن الاستثناء قد ابتلعه MSMQ ، لذلك لم يكن واضحًا على الفور. يمكن إصلاح هذا في التكوين, ، أو في التعليمات البرمجية (إذا كنت تقوم بإعداد روابطك يدويًا) عن طريق الرجوع إلى system.runtime.serialization وزيادة الربط .ReaderQuotas.MaxArrayLength
بشكل مناسب. القيمة القصوى المسموح بها 2147483647
.