2011-08-04 2 views
3

많은 WCF 서비스가 있으며 다른 서비스에서 하나의 서비스를 호출해야합니다. 이 목적으로 netNamedPipeBinding을 사용하기로 결정했습니다.net.pipe 예외를 수신하는 끝 점이 없습니다.

내 web.config 파일은 다음과 같습니다. (. 내가 여기에 관련이없는 물건을 복사하지 않은 경우)

<services> 
      <service    name="Services.AuthorizationService" > 
      <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" > 
      <endpoint 
       name="AuthorizationService" 
       address="" 
       binding="basicHttpBinding"    contract="ServiceContracts.IAuthorizationService" /> 
      <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc" 
        binding="netNamedPipeBinding"     contract="ServiceContracts.IAuthorizationService" 
        name="AuthorizationNamedPipeEndpoint"/>   
      </service> 
</Services> 

web.config 파일의 클라이언트 섹션은 다음과 같습니다

<client> 
     <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc" 
     binding="netNamedPipeBinding"   contract="ServiceContracts.IAuthorizationService" name="AuthorizationServiceNamedPipe" /> 
    </client> 

나는 OperationContract들 중 하나 (GetDetails)를 호출하는 것을 시도하고있다 이 같은 :

using (ChannelFactory<IAuthorizationService> authorizationChannel = new ChannelFactory<IAuthorizationService>("AuthorizationServiceNamedPipe")) 
         { 
          IAuthorizationService authorizationService = authorizationChannel.CreateChannel(); 
          var response = authorizationService.GetDetails(new GetDetailsRequestMessage()); 
         } 

이 코드를 실행하면, 나는 내가 OperationContract가의 GetDetails를 호출 라인에 예외를 얻을 :

메시지를 수락 할 수있는 net.pipe : //localhost/TestSite/AuthorizationService.svc에서 수신하는 끝점이 없습니다. 이것은 종종 잘못된 주소 또는 SOAP 조치로 인해 발생합니다. 자세한 내용은 InnerException을 참조하십시오.

정확한 문제를 찾을 수 없습니다. InnerException도 없습니다. Windows7 컴퓨터를 사용 중이며 IIS 버전은 IIS7.5입니다. 이 서비스는 아무 문제없이 Winform 응용 프로그램에서 호출 할 수 있습니다. net.pipe 바인딩은 IIS의 웹 사이트 바인딩에 추가됩니다.

net.pipe 전송을 사용하여 서비스가 올바르게 작동하는지 확인하려면 어떻게해야합니까? HTTP의 경우 IE에서 찾아 볼 수 있습니다.

+0

두 서비스가 동일한 시스템에서 실행되고 있습니까? – Franchesca

+0

@Franchesca : 예, 같은 시스템에서 IIS 7.5에서 실행됩니다. – Learner

+0

내가 알 수있는 것은 서버 측에 주소 또는 호스트 기본 주소를 제공하지 않았다는 것입니다. 그게 실수 야? – Jack

답변

9

이 문제는 Control Panel —> Programs and Features, and then click "Turn Windows Components On or Off" in the left pane. Expand the Microsoft .NET Framework 3.5에서 Windows Communication Foundation Non-HTTP Activation 구성 요소를 활성화 한 후에 해결되었습니다.

활성화되었을 때 비 HTTP 바인딩을 사용하면 WAS가 자동으로 사용됩니다.

나는 아주 기본적인 & 어리석은 실수를했지만, 많은 것을 배울 수있었습니다.

WCF gets Access denied when the consumer try invoke a WCF service calls hosted on Virtual Machine

마지막 링크

Extend Your WCF Services Beyond HTTP With WAS

Hosting WCF Services in Windows Activation Service

나에게 서버 인증서 관련 구성이 문제의 원인이 될 수있는 포인터를 준 다음 기사는 나에게 많은 도움이되었습니다. 서비스에 대한 동작 (질문에는 보이지 않음)을 추가하고있었습니다. 그 동작은 서버 인증서를 사용하고있었습니다.

+0

IIS 외부에서 호스팅되는 WCF 서비스가 있습니다. IIS 내부에서 실행중인 RIA 도메인 서비스에서 nettcpnamedpipe 바인딩을 통해 IIS 외부에서 호스팅되는이 WCF 서비스를 호출해야합니다. 그것은 작동하지 않는 것 같습니다. 같은 문제에 직면 했습니까? –

0

SharePoint 2013에서 동일한 문제가 발생했습니다. 설치하는 동안 문제가 발생하여 활성화 설정이 켜지지 않았습니다. 응용 프로그램 서버 기능이나 다른 문제가 있는지 확실하지 않습니다.

게시물에 감사드립니다. 우리는 SP 2013 문제도 해결할 수있었습니다.

System.ServiceModel.EndpointNotFoundException : net.pipe : // localhost/SecurityTokenServiceApplication/appsts에서 수신하는 끝 점이 없습니다.svc 메시지를 수락 할 수 있습니다. 이것은 종종 잘못된 주소 또는 SOAP 조치로 인해 발생합니다. 자세한 내용은 InnerException을 참조하십시오. --->

System.IO.PipeException : 'net.pipe : //localhost/SecurityTokenServiceApplication/appsts.svc'파이프 끝점을 로컬 컴퓨터에서 찾을 수 없습니다.

관련 문제