2013-02-22 2 views
0

'Add Service Reference ...'를 사용하여 참조를 추가 한 프로젝트에서 WCF 서비스를 사용하고 있습니다. ServiceClient 엔티티와 인터페이스로 깨끗한 프록시를 생성 할 것으로 기대했습니다. 대신, 각 OperationContract 메소드에 대해 MethodNameRequest, MethodNameRequestBody, MethodNameResponse, MethodNameResponseBody 엔티티를 작성했음을 알았습니다.메시지 계약 생성 WCF 용 프록시 생성

서비스 메소드를 호출하는 동안 프록시는 메소드의 입력 매개 변수를 RequestBody의 특성으로 사용하여 MethodNameRequest의 인스턴스를 서비스 메소드에 전달합니다. 아래에서 매개 변수를 허용하지 않는 AboutInformationGet() 메서드 호출의 예를 참조하십시오.

 public WCFDynamicInvocation.PostingService.AboutModel AboutInformationGet() { 
     WCFDynamicInvocation.PostingService.AboutInformationGetRequest inValue = new WCFDynamicInvocation.PostingService.AboutInformationGetRequest(); 
     inValue.Body = new WCFDynamicInvocation.PostingService.AboutInformationGetRequestBody(); 
     WCFDynamicInvocation.PostingService.AboutInformationGetResponse retVal = ((WCFDynamicInvocation.PostingService.IMIGQPosting)(this)).AboutInformationGet(inValue); 
     return retVal.Body.AboutInformationGetResult; 
    } 

저는이 동작이 웹 서비스 프록시에서 볼 것으로 예상되는 것이라고 생각합니다. 따라서 WCF 서비스가 제대로 구성되어 있지 않은 것 같습니다.

여기 누군가가이 문제에 직면 했습니까? 생성 된 프록시가 WCF 서비스와 유사하도록 서비스에서 수행 할 변경 사항은 무엇입니까?

건배.

답변

0

약간의 시간이 고민 후, 나는 마침내 프록시에서 메시지 계약에 대한 원인은 서비스 인터페이스는 다음과 같은 속성을 가지고 것을 발견했습니다 랩핑을 피하기 위해 다음 속성을 가진 DataContracts [MessageContract (IsWrapped = false)]

그러나 OperationContract가 수정되지 않았으므로 응답이 여전히 래핑됩니다.

WCF의 기본 DataContractSerializer 대신 XMLSerializer를 사용할 필요가 없으므로 XmlSeralizerFormat 장식을 제거합니다.

0

here과 비슷한 게시물이 있습니다.

서비스 참조를 마우스 오른쪽 버튼으로 클릭하고 서비스 참조 구성 ... -> "메시지 계약 항상 생성"확인란이 선택되어 있는지 확인하십시오. 선택을 취소하고 확인을 눌러 프록시를 재생성하여 일반 프록시가 있는지 확인하십시오.

내가 알고있는 것처럼
[XmlSerializerFormat(Use = OperationFormatUse.Literal, Style = OperationFormatStyle.Document)] 

, 내가 장식 수 :

+0

링크는 Praburaj에게 감사드립니다. '항상 메시지 계약 생성'확인란은 선택되어 있지 않습니다. 또한, 나는 모든 객체가 OP와 함께 DataContract 특성을 가졌는지 확인했다. 문제는 여전히 지속되지만 지금 나는 그 문제에 직면 한 유일한 사람이 아니라는 것을 알고 있습니다. :) – Rair

+0

@RonalR, 또는 svcutil을 사용하여 참조를 생성하려고 했습니까? 당신도 같은 행동을합니까? – Praburaj

+0

예상대로 Svcutil은 동일한 프록시 클래스를 생성합니다. – Rair

관련 문제