2011-01-05 5 views
4

WCF를 배우기 시작했으며 몇 가지 테스트 http 서비스를 성공적으로 만들었습니다. 이제 net.pipe 바인딩을 사용하여 자체 호스팅 WCF 서비스를 만들려고했습니다. 아래는 서비스의 구성 파일은 다음과 같습니다 - 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(); 

서비스는이 코드가 실행될 때 올바르게 시작합니다.

이제 클라이언트 응용 프로그램에서이 실행중인 서비스에 서비스 참조를 추가하려고 시도했지만 찾을 수 없습니다. 내가하지 않거나 잘못하고있는 일이 있습니까?

이 문제에 관해 도움을 주시면 감사하겠습니다.

건배, Abhi.

+0

"서비스 참조 추가"로 전달하려는 URL은 무엇입니까? 정확히 어떤 오류가 발생합니까? 또한 명령 줄 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()는 닫기 전에 필수입니다.