2011-01-05 4 views
4

Я начал изучать WCF и успешно создал несколько тестовых http-сервисов. Теперь я пытался создать самообслуживаемую службу WCF, используя привязку net.pipe. Ниже приведен конфигурационный файл для службы: -Добавление ссылки на службу net.pipe

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<system.serviceModel> 
    <services> 
     <service behaviorConfiguration="MEX" name="InProcService.MyService"> 
      <endpoint address="MyService" 
       binding="netNamedPipeBinding" bindingConfiguration="" contract="InProcService.IMyService" /> 
      <endpoint address="Mex" binding="mexNamedPipeBinding" 
       contract="IMetadataExchange" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="net.pipe://localhost/InProcService/" /> 
        <add baseAddress="http://localhost:8001/InProcService/" /> 
       </baseAddresses> 
      </host> 
     </service> 
    </services> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="MEX" > 
     <serviceMetadata httpGetEnabled="true"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 
</configuration> 

Теперь в моей хост-приложения, я начинаю обслуживание с помощью: -

 ServiceHost host = new ServiceHost(typeof(MyService)); 
     host.Open(); 
     Console.WriteLine("Service started"); 

     host.Close(); 

Служба запускается правильно, когда этот код выполняется.

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

Буду признателен за любую помощь, которую я могу получить.

Cheers, Abhi.

+0

Адрес, использованный для перевода: «Добавить Service Reference»? Что именно вы получаете? Кроме того, попробуйте использовать программу svcutil.exe из командной строки - вы должны уметь видеть ошибки. –

+0

Как вы указываете на свою услугу при добавлении ссылки на службу? Адрес конечной точки должен выглядеть так: net.pipe: // localhost/InProcService/MyService – volpav

+0

В сообщении об ошибке указано: - «Метаданные содержат ссылку, которая не может быть разрешена:« net.pipe: // localhost/InProcService/MyService ». Не было прослушивание конечных точек в net.pipe: // localhost/InProcService/MyService, которые могли бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Дополнительные сведения см. В InnerException, если присутствует. Конечная точка канала 'net.pipe: // localhost/InProcService/MyService' не найден на вашем локальном компьютере. Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу. " Есть идеи? –

ответ

2

После этого услуга открывается и закрывается. К моменту запуска клиента сервер уже закрыт. Так что Console.ReadKey() требуется перед закрытием.

Смежные вопросы