2011-01-18 2 views
0

나는 다음과 같은 작업 계약 방법이 있습니다기본 WCF 메시지 계약 비누 헤더 질문

[OperationContract] 
MyOutputMessageType DeleteVRequest(DeleteVRequest type); 

[MessageContract]  
public class DeleteVRequest 
    { 

    [MessageHeader(Name = "UserId")] 
    public Guid UserId; 

    [MessageHeader(Name = "Password")] 
    public String Password; 

    [MessageHeader(Name = "Version")] 
    public String Version; 

    [MessageBodyMember] 
    public Guid Id; 
} 

[MessageContract] 
public class MyOutputMessageType 
{ 
    [MessageBodyMember] 
    public string Response; 
} 

내 질문은 어떻게에서 통화 설정 계약 (사용자 ID, 비밀번호, 버전)의 비누 헤더 값은 고객 입장에서? outgoingmessageheaders에 Add를 사용하여 헤더 값을 쓰면 messagecontract의 값으로 매핑되지 않는 것 같습니다. 예를 들어 헤더에 UserId 값을 추가하면 DeleteVRequest 메서드 내에서 UserId 값이 표시되지 않습니다.

어떤 도움을 주셔서 감사합니다. 저는 SOAP 헤더 판독기/SOAP 작성에 정말로 고심하고 있습니다.

답변

1

클라이언트 측에서 .NET을 사용하는 경우 서비스 프록시는 데이터 계약보다 메시지 계약을 수락하며 다른 속성처럼 헤더 속성을 설정할 수 있습니다.

그렇지 않으면, 당신은 수동으로 헤더 값을 설정 OperationContextScope를 사용 할 수 있습니다

using(OperationContextScope context = new OperationContextScope(proxy.InnerChannel)) 
{ 
    OperationContext.Current.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader("HeaderName", "HeaderNamespace", "SomeValue")); 

    //Make your proxy calls here 
}