سؤال

كيفية تكوين WCF لاستخدام فقط واحد من نقاط النهاية المتاحة؟

أحتاج إلى منفذي TCP (وبالتالي استخدام netTcpBinding). يجب أن يحاول مضيف الخدمة أولاً ربط المنفذ الأول. إذا فشلت ، وفقط إذا فشلت ، يجب أن تحاول ربط المنفذ الثاني.

تعديل

عرفت أنه يمكن تحقيقه برمجيًا ، لكن نيتي في القيام بذلك بشكل إعلاني (باستخدام .config الملفات فقط).

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

المحلول

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

Dim oProxy as New YourWCFServiceType()

oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try first"))

Dim FirstBindingSucceeded as Boolean
Try
    oProxy.Open()
    FirstBindingSucceeded = True
Catch
End Try

If FirstBindingSucceeded = False Then
    oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try second"))
End If

oProxy.Open()

نصائح أخرى

على جانب الخادم ، لا توجد مشكلة في فضح خدمة مع روابطين.

ولكن على جانب العميل ستحصل على خطأ في العقد مكرر (أو كلمات بهذا المعنى)

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

لديك نسخة واحدة من التنفيذ ، كل خدمة ترث من هذا التنفيذ.

لديك بعد ذلك خدمتان على منافذ مختلفة ، لها نفس التنفيذ / الوظائف.

على العميل ، تحتاج بعد ذلك إلى برمجة أنه يحاول أولاً المنفذ الأول ، ثم إذا فشل ذلك ، فإنه يحاول الثانية.

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