Проблема с добавлением ссылки на службу к службе WCF, размещенной в службе Windows - PullRequest
2 голосов
/ 27 октября 2009

Я создаю интерфейс службы WCF для существующего процесса службы Windows. Целью интерфейса WCF является предоставление «Командного канала» для реализации административных возможностей для службы Windows. Определено несколько методов OperationContract, предназначенных для извлечения информации и управления поведением службы Windows, выходящей далеко за пределы возможности запуска / остановки / паузы апплета Services.

Эта служба WCF предназначена для того, чтобы быть частью существующего процесса. Таким образом, запуск службы WCF в IIS или ServiceHost невозможен.

Моя проблема заключается в том, что хотя ServiceHost не выдает ошибку в Open (), я не могу получить "WCF Test Client" (или что-либо еще) для поиска службы.

Это моя первая Служба WCF, и у меня возникли проблемы с поиском примеров или шаблонов, которые соответствуют тому, что я пытаюсь сделать. Так что у меня нет иллюзий, и я не удивлюсь, если сделаю много неправильно. Кроме того, не то, что у меня есть 'portSharingBinding = false'. У меня действительно было это, но это выдавало ошибку, которая указала на другой сервис, который я не хочу запускать. Требуется ли совместное использование портов?

Информация о конфигурации:

<system.serviceModel>  
  <bindings>  
    <netTcpBinding>  
      <binding  name="PortBinding" portSharingEnabled="false" />  
    </netTcpBinding>  
  </bindings>  
  <services>  
    <service name="NameChanged.ServiceManager.CommandService">  
    <endpoint address="net.tcp://localhost"  
              binding="netTcpBinding"  
              bindingConfiguration="PortBinding"  
              name="ServiceManagerCommandChannel"  
              contract="NameChanged.ServiceManager.ICommandService" />  
    </service>  
  </services>  
</system.serviceModel>  

Я также попробовал маршрут no config, используя следующий код:

  ServiceHost host = new ServiceHost(typeof(CommandService)))  
  host.AddServiceEndpoint(typeof(ICommandService),  
                           new NetTcpBinding(), "net.tcp://localhost:8000");  
  host.Open();  

Также нет ошибок в Open (). Но безуспешное подключение к услуге.

Спасибо за ваше время,
Jim

1 Ответ

4 голосов
/ 27 октября 2009

Я могу говорить только с тестовым клиентом WCF, но он ищет метаданные для вашего сервиса, чтобы он мог сгенерировать прокси для него. Из приведенной выше конфигурации не видно, что вы выставляете конечную точку обмена метаданными. Посмотрите эту ссылку для получения дополнительной информации:

http://weblogs.asp.net/fabio/archive/2009/02/28/net-tcp-mex-endpoints-and-portsharing-in-wcf.aspx

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...