Может ли служба иметь несколько конечных точек? - PullRequest
7 голосов
/ 05 сентября 2008

У нас есть сервис, который имеет некоторые настройки, которые поддерживаются только через net.tcp. Какой лучший способ добавить другую конечную точку? Нужно ли создавать новый хост?

Ответы [ 4 ]

9 голосов
/ 09 сентября 2008

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

Чтобы сделать это на клиенте, вам просто нужно отредактировать файл app.config с новой конечной точкой с другим именем, а затем определить при создании нового клиента.

Например, если у вас есть конечная точка в клиентском приложении, например:

<endpoint address="https://yourdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService" />

по которому вы звоните:

YourServiceClient client = new YourServiceClient();

Вы можете добавить новую конечную точку с новым именем:

<endpoint address="https://yourotherdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService_ENDPOINT2" />

По которому можно позвонить:

YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");

Я только что изменил домен выше, но если вы сделали новый раздел конфигурации привязки, вы можете просто изменить значение "bindingConfiguration".

6 голосов
/ 05 сентября 2008

Служба может иметь несколько конечных точек на одном хосте, но каждая конечная точка должна иметь уникальную комбинацию адреса, привязки и контракта. Для службы, размещенной на IIS (то есть файла .SVC), просто установите адрес конечной точки на относительный URI и убедитесь, что ваш сгенерированный клиент Visual Studio или wsdl.exe указывает имя конечной точки в своем конструкторе.

См. Также статью MSDN Несколько конечных точек .

0 голосов
/ 17 декабря 2018

Мы можем использовать несколько конечных точек для одной и той же услуги. Мы также можем настроить веб-конфигурацию следующим образом:

 <service name="MessagePatternDemo.Service1">  
 <endpoint name="ep1" address="/ep1" binding="basicHttpBinding" 
   contract="MessagePatternDemo.IService1"/>  
 <endpoint name="ep2" address="/ep2" binding="wsHttpBinding"  
   contract="MessagePatternDemo.IService1" />  
 <endpoint name="mex" contract="IMetadataExchange" address="mex"  
   binding="mexHttpBinding" />  
 </service>   
0 голосов
/ 08 сентября 2008

Вам потребуется создать новый хост полностью, если вы в настоящее время используете IIS в качестве хоста - IIS поддерживает только HTTP, а не привязки TCP. Однако, если вы используете WAS или службу Windows, вы сможете просто создать новую конечную точку net.tcp.

...