2011-01-18 66 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 
}