Может ли служба иметь несколько конечных точек?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

Чтобы сделать это на клиенте, вам просто нужно отредактировать файл 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».

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

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

 <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>   
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top