Программное включение адреса конечной точки службы WCF

Мне нужно подключить 2 экземпляра одного и того же приложения wcf друг к другу (для сценария тестирования).

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

конечная точка, доступная для каждого клиента:

 <services>
    <service name="BackGammonClient.ClientService">
        <endpoint address="net.tcp://localhost:8081/ClientService" binding="netTcpBinding"
                bindingConfiguration="" contract="Contracts.Client.IClient" />
    </service>
  </services>     

проблема в том, что каждый клиент предоставляет одну и ту же конечную точку, поскольку все они работают на одном локальном хосте и имеют один и тот же порт.

как я могу динамически применять порт для каждого экземпляра клиентского приложения?

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


person eran otzap    schedule 25.02.2012    source источник


Ответы (1)


Вы можете программно настроить свою конечную точку. Видеть:

http://msdn.microsoft.com/en-us/library/ff647110.aspx

Этот пост стека охватывает определение того, свободен ли порт:

В C #, как проверить, есть ли порт TCP есть в наличии?

Вот еще одна ссылка с некоторой программной конфигурацией конечной точки:

http://en.csharp-online.net/WCF_Essentials%E2%80%94Programmatic_Endpoint_Configuration

Итак, что-то вроде:

string svcUri = String.Format("net.tcp://localhost:{0}", port);
ServiceHost host = new ServiceHost(typeof(MyService));
Binding tcpBinding = new NetTcpBinding( );
host.AddServiceEndpoint(typeof(IMyOtherContract),tcpBinding,
svcUri);
host.Open( );
person bryanmac    schedule 25.02.2012
comment
статья msdn кажется слишком сложной, все, что мне нужно, это присвоить значение адресу в теге конечной точки. Я не создаю прокси на другой стороне с помощью инструмента svc. Я использую службу через канал. - person eran otzap; 25.02.2012
comment
Я добавил еще одну ссылку, которая кажется более понятной - person bryanmac; 25.02.2012
comment
спасибо, я опубликую ответ о том, что я в итоге сделал простым, но не обычным, я хотел бы услышать ваш отзыв - person eran otzap; 26.02.2012