2014-10-04 4 views
0

요청 메시지를 보호해야합니다. 이는 계약 운영 ('IMyNumericService', 'http://tempuri.org/')에 필요합니다. 보호는 바인딩 ('BasicHttpBinding', 'http://tempuri.org/')에 의해 제공되어야합니다.Wcf 클라이언트가 호스트에 연결하지 않음

내 서비스를 등록한 호스트에 연결하려고 할 때 위의 예외가 발생합니다. 하지만 호스트가 작동 중입니다. 예외보다 위에 표시되는 클라이언트 응용 프로그램에 연결하려고 시도했을 때

+0

바인딩 불일치처럼 보입니다. 서비스 구성 및 클라이언트 구성을 포함하십시오. – tomasr

+0

이제는 WSHttpBinding에서 작동하지만 BasicHttpBinding에서는 작동하지 않습니다. – VinodKumar

+0

그래서 .... 해결 되었습니까? 그렇다면 우리가 도와 드릴 수 있도록 구성을 게시하십시오 :) – tomasr

답변

0

WCF의 클라이언트 및 서비스 보안에 설정합니다. WCF의 메시지, 오류, 작동 및/또는 서비스 수준에서 유선을 통해 전송되는 메시지의 보호 수준을 설정할 수 있습니다. 속성으로 설정할 메시지 ProtectionLevel이라는 세 가지 메시지가 있습니다. 이렇게하면 서비스에 사용되는 모든 엔드 포인트에서 최소한이 보호 레벨이 필요하게됩니다.

없음 일반 텍스트가 이동 중입니다. 기호 메시지에 디지털 서명이되어 있습니다. 메시지를 수정하지 않습니다. 메시지는 여전히 일반 텍스트입니다. EncryptAndSign 서명하기 전에 메시지가 암호화됩니다. 메시지를 수정하지 않고 스크램블합니다. 예를 들어, EchoService가 ServiceContract 수준에서 EncryptAndSign의 ProtectionLevel로 설정된 경우 BasicHttpBinding이있는 끝점이 시작되지 않습니다. 이는 BasicHttpBinding이 기본적으로이 보호 수준을 지원하지 않기 때문에 (활성화 될 수 있음) 때문입니다. [ServiceContract (ProtectionLevel = ProtectionLevel.EncryptAndSign)] 공용 인터페이스 IEchoService { [OperationContract (IsOneWay = true)] void RegisterClient (Guid guid);

[FaultContract(typeof(EchoFault))] 
    [OperationContract] 
    EchoMessage Echo(EchoMessage message); 

    [OperationContract] 
    List<EchoMessage> GetAllEchos(); 
} 

이 보호 수준을 BasicHttpBinding 끝점과 함께 사용하면 호스트에서 예외가 발생합니다.

System.InvalidOperationException : 요청 메시지를 보호해야합니다. 이것은 계약의 운영에 필요합니다 [..]. 바인딩은 바인딩을 통해 보호를 제공해야합니다.

그러나 예를 들어 wsHttpBinding과 같은 끝점 바인딩을 변경하면 서비스가 정상적으로 실행됩니다. 이는 WsHttpBinding이 기본적으로 EncryptAndSign 보호 수준을 지원하기 때문입니다.

+0

제안 변경 사항을 발견 한 경우 .. !! – VinodKumar

관련 문제