هل يمكن للتطبيقان مشاركة نفس منفذ WCF Nettcpbinding إذا كانوا يستخدمون عناوين نقطة نهاية مختلفة؟

StackOverflow https://stackoverflow.com/questions/1319390

سؤال

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

لقد قمت بتمكين وبدأت خدمة Windows Sevice Service Service Service Net.TCP. يمكنني بدء تشغيل خدمة الخادم أولا. عندما أحاول بدء تشغيل خدمة العميل، أحصل على الاستثناء التالي عند تنفيذ ServiceHost.open ():

The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the URI is already registered with the service.

أدناه هو شفرة المصدر. يستخدم كل من الخادم والعميل عناوين نقطة نهاية مختلفة كما يلي:

خدمة الخادم:

ServiceHost serviceHost = new ServiceHost(typeof(ServerService),
    new Uri("net.tcp://localhost:50000");
NetTcpBinding binding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(IServerService), 
    binding, "ServerService");
serviceHost.Open();

خدمة العميل:

ServiceHost serviceHost = new ServiceHost(typeof(ClientService),
    new Uri("net.tcp://localhost:50000");
NetTcpBinding binding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(IClientService),
    binding, "ClientService");
serviceHost.Open();
هل كانت مفيدة؟

المحلول

أنا فقط حلها في جعل قاعدة URI الأساسية مختلفة أثناء إنشاء مثيل للخدمة. يتبع التعليمات البرمجية المنقحة:

الخادم

ServiceHost serviceHost = new ServiceHost(typeof(ServerService),
    new Uri("net.tcp://localhost:50000/Server");
...

عميل

ServiceHost serviceHost = new ServiceHost(typeof(ClientService),
    new Uri("net.tcp://localhost:50000/Client");
...

نصائح أخرى

يجب أن يساعد ذلك أيضا في ... إصدار العمل من مشاركة ميناء TCP في التعليمات البرمجية (VB.NET)

http://softwarebykarl.wordpress.com/wcf-shared-tcp-port-in-code/

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