WCF: "فشل في فتح System.ServicEmodel.Channels.ClientReliablePlexsessionchannel"
-
03-07-2019 - |
سؤال
لدي حاليًا خدمة WCF مع عقد رد اتصال (Duplex) ، وعندما أستخدم التطبيق الذي يستخدمه على جهاز الكمبيوتر الخاص بي ، كل شيء يعمل بشكل جيد ، لكن عندما أحاول من جهاز كمبيوتر مختلف ، فإنه لا يتصل.
بدأت هذه المشكلات تحدث بمجرد أن أتحول إلى استخدام هذا wsDualHttpBinding
(للاسترجاعات) لأنني عندما استخدمت wsHttpBinding
كل شيء يعمل بشكل جيد.
لماذا لا تقبل خدمة الويب طلبات من أجهزة الكمبيوتر الأخرى؟ هل هي بعض إعدادات الاستضافة التي تحتاج إلى تعديل؟
فيما يتعلق بالسجلات ، أحصل على هذه:
alt text http://img17.imageshack.us/img17/4628/wcfissue.jpg
لم تكتمل العملية المفتوحة ضمن المهلة المخصصة لـ 00:01:00. قد يكون الوقت المخصص لهذه العملية جزءًا من مهلة أطول
فشل في فتح system.servicemodel.channels.clientreliablePlexsessionchannel
shereed system.ServicEmodel.Channels.ClientReliablePlexsessionchannel
shere system.ServicEmodel.Channels.Servicechannel
فشل في فتح system.servicemodel.channels.Servicechannel
المنفذ مفتوح على جهاز التوجيه الخاص بي (كل من TCP و UDP) بحيث لا تكون هذه هي المشكلة.
فيما يتعلق بسمات الخدمة ، هذا ما أستخدمه:
واجهه المستخدم:
[ServiceContract(Name = "MusicRepo_DBAccess_Service",
CallbackContract = typeof(IOnlineUsersCallback),
SessionMode=SessionMode.Required)]
خدمة:
[ServiceBehavior(
ConcurrencyMode=ConcurrencyMode.Reentrant,
InstanceContextMode=InstanceContextMode.Single)]
تحديث
كتحية أوريون إدواردز' بريد:
- لا جدار الحماية
- انظر النقطة 1
- نعم أستطيع ، لأن لدي المنفذ على جهاز التوجيه الخاص بي
- أنا أستخدم IIS لاستضافة الخادم.
الشيء هو أن هذه المشكلة بدأت تحدث عندما تحولت من wsHttpBinding
(الذي كان يعمل بشكل جيد) ل wsDualHttpBinding
(لأنني كنت بحاجة إلى عمليات الاسترجاعات)
تحديث
لقد تحولت الآن من wsDualHttpBinding
إلى NetTcpBinding
ولسبب ما ، كل شيء يعمل بشكل جيد.
لقد استخدمت هذه المقالة لمساعدتي في إعداد الاستضافة على IIS ، وشكر كل شيء يعمل كما هو متوقع ، مع عمليات الاسترجاعات.
المحلول
لقد تحولت الآن من wsDualHttpBinding
إلى NetTcpBinding
ولسبب ما ، كل شيء يعمل بشكل جيد.
لقد استخدمت هذه المقالة لمساعدتي في إعداد الاستضافة على IIS ، وشكر كل شيء يعمل كما هو متوقع ، مع عمليات الاسترجاعات.
نصائح أخرى
سيساعد ذلك إذا قمت بنشر إعدادات تكوين الخادم والعميل.
إليك ملخص لكيفية عمل WSDualHTTPBINDING MSDN (أكد لي):
يوفر WSDUALHTTPBINDING نفس الدعم لبروتوكولات خدمة الويب مثل WSHTTPBING ، ولكن للاستخدام مع العقود المزدوجة. يدعم WSDualHttpBinding فقط أمان الصابون ويتطلب رسائل موثوقة. يتطلب هذا الربط أن يكون لدى العميل URI عام يوفر نقطة نهاية رد الاتصال للخدمة. يتم توفير هذا من خلال سمة ClientBaseadDress. يعرض الربط المزدوج عنوان IP للعميل للخدمة. يجب على العميل استخدام الأمان للتأكد من أنه يتصل بالخدمات التي يثق بها فقط.
يمكن استخدام هذا الربط للتواصل بشكل موثوق من خلال واحد أو أكثر من وسطاء الصابون.
بشكل افتراضي ، يقوم هذا الربط بإنشاء مكدس وقت التشغيل مع WS-ReliaBraysage للموثوقية ، و WS-Security لأمان الرسائل والمصادقة ، و HTTP لتسليم الرسائل ، وترميز رسالة نص/XML.
أشياء للتحقق:
- جدار الحماية Windows
- جدار الحماية الخاص بمنتج مكافحة الفيروسات
- هل يمكنك telnet في المنفذ من جهاز بعيد؟
- هل يعمل "الخادم" الخاص بك تحت خادم تطوير ASP.NET؟ لن يقبل ذلك سوى طلبات من المضايسات المحلية - تحتاج إلى استضافة الخادم ذاتيًا باستخدام
ServiceHost
أو استضافها تحت IIS.