C# WP7-将MessageHeader添加到WCF Soap服务调用

C# WP7-将MessageHeader添加到WCF Soap服务调用,c#,wcf,windows-phone-7,soap,C#,Wcf,Windows Phone 7,Soap,过去两天我一直在尝试配置我的WP7应用程序,以便将消息头发送到我的WCFSOAP服务。我只是想在每次通话中发送一串信息 网上有大量的指南,但我似乎无法将它们拼凑在一起来完成我想做的事情,而且在一些帮助下我真的可以做到 那么,有人能帮我用最简单的方法在我的服务中添加一个消息检查器,并从我的应用程序中附加标题吗 谢谢 对于WP7,没有“简单”的方法可以做到这一点。WCF中的大多数可扩展性点并不存在于WP7平台中,因此您有两种选择 最简单的方法是使用OperationContext添加传出消息头。这相

过去两天我一直在尝试配置我的WP7应用程序,以便将消息头发送到我的WCFSOAP服务。我只是想在每次通话中发送一串信息

网上有大量的指南,但我似乎无法将它们拼凑在一起来完成我想做的事情,而且在一些帮助下我真的可以做到

那么,有人能帮我用最简单的方法在我的服务中添加一个消息检查器,并从我的应用程序中附加标题吗

谢谢

对于WP7,没有“简单”的方法可以做到这一点。WCF中的大多数可扩展性点并不存在于WP7平台中,因此您有两种选择

最简单的方法是使用
OperationContext
添加传出消息头。这相当简单(见下文),但您需要为您调用的每个操作执行此操作:

var client = new ServiceReference1.MyServiceClient();
client.OperationCompleted += ...;
using (new OperationContextScope(client.InnerChannel))
{
    OperationContext.Current.OutgoingMessageHeaders.Add(
        MessageHeader.CreateHeader(
            "headerName", "http://header.namespace", "the value"));
    client.OperationAsync(param1, param2);
}
如果在所有操作中这样做太多,另一种方法是创建一个类来包装客户机,并对所有操作进行包装。仍然有很多代码,但至少会集中在一点上,而不是在整个应用程序中传播

最后一种选择(我现在还记得)是使用消息检查器。它们不是平台的一部分,但根据您的场景,我已经实现了一个对检查器/格式化程序的支持,如上的博客文章所示。对于简单的场景,它应该可以正常工作