سؤال

يمكنني العمل مع العديد من روابط WCF ، باستثناء netMsmqBinding. كل ما أحصل عليه هو:

CommunicationObjectFaultException: "لا يمكن استخدام كائن الاتصال ، system.ServicEmodel.Servicehost ، للاتصال لأنه في الحالة المعطلة."

في System.ServicEmodel.Channels.CommunicationObject.Close (TimePan Timeout)

جربته في Windows Server 2008 R2 مع تثبيت الميزات التالية

  • قائمة انتظار الرسائل
  • خدمات قائمة انتظار الرسائل
  • خادم قائمة انتظار الرسائل
  • مشغلات قائمة انتظار الرسائل
  • دعم HTTP
  • الدعم متعدد البث
  • رسائل قائمة انتظار وكيل DCOM

حاولت أيضًا إضافة قائمة انتظار رسائل خاصة يدويًا في مدير الخادم لكنها لم تنجح.

أنا أستخدم خدمة Windows لاستضافة MSMQ الخاص بي. عقد الخدمة الخاص بي هو

namespace MyCompany.Services
{
[ServiceContract(Name = "ServiceName",
                     Namespace = "http://MyCompany/ServiceName")]
public interface IServiceName
{
    [OperationContract(IsOneWay = true)]
    void Insert(MyData[] data);
}
[DataContract]
public class MyData
{
    [DataMember]
    public DateTime DateTime { get; set; }
    [DataMember]
    public double Lat { get; set; }
    [DataMember]
    public double Lon { get; set; }
    [DataMember]
    public TimeSpan Timespan { get; set; }
    [DataMember]
    public Guid Id { get; set; }
    [DataMember(IsRequired = false)]
    public int? Category { get; set; }
}
}

ويحتوي app.config

  <endpoint
      address="net.msmq://localhost/private/ServiceName"
      binding="netMsmqBinding"
      contract="MyCompany.Services.IServiceName"
      bindingConfiguration="tolerant"
      behaviorConfiguration="tolerant"
      />

و

<netMsmqBinding>
  <binding name="tolerant"
         maxReceivedMessageSize="2147483647"
         >
    <readerQuotas maxArrayLength="2147483647" />
    <security mode="None"/>
  </binding>
</netMsmqBinding>
هل كانت مفيدة؟

المحلول

أفضل نقطة انطلاق هي نشر مدونة توم هولاندر المكونة من ثلاثة أجزاء:

وإلقاء نظرة جيدة على مستندات MSDN على قوائم الانتظار في WCF - الكثير من الأشياء هناك أيضًا!

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

تحقق من الموارد ومعرفة ما إذا كان ذلك يساعدك على خطوة أو خطوة أخرى - إن لم يكن ، سيتعين علينا الحصول على مزيد من المعلومات منك!

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