Как я могу динамически установить номер порта базового адреса службы WCF в app.config?

В настоящее время у меня есть конечная точка netTcpBinding, которая прослушивает порт 8000.

Я настроил базовый адрес в файле app.config вот так

net.tcp://*:8000/TestProject/Service

Это работает, как и ожидалось, и служба прослушивает порт 8000.

Моя проблема заключается в том, что эта служба будет развернута на сторонних компьютерах, и меня беспокоит конфликт портов (и появление System.Net.SocketException при попытке открыть порт, который уже используется другим приложением).

Я могу обработать исключение и использовать IPGlobalProperties для поиска доступного порта в коде для воссоздания базового адреса с использованием свободного порта, но я надеялся, что есть способ указать WCF использовать динамический порт в app.config параметр.

Клиентским соединениям не нужно знать предопределенный номер порта, поскольку они используют WS-Discovery для поиска конечной точки сервера.


person Alex Wiese    schedule 27.07.2013    source источник


Ответы (1)


Вы можете добавить это в свой app.config.

<appSettings>
   <add key="Port" value="8000" />
</appSettings>

И прочитайте это в коде

string port = ConfigurationManager.AppSettings["Port"];

После того, как вы прочитали порт, вам нужно создать URL-адрес.

person Hans-Rudolf Steiger    schedule 27.07.2013