2011-01-18 67 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,密碼,版本)的肥皂頭值客戶端?如果我在輸出消息頭中使用Add編寫頭部值,它似乎不會映射到messagecontract中的值。因此,例如,如果我將一個UserId值添加到標題,它似乎沒有看到在DeleteVRequest方法內。

感謝您的幫助,我真的一直在使用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 
}