过去两天我一直在尝试配置我的 WP7 应用程序以将消息头发送到我的 WCF Soap 服务。我只是想在每次通话时发送一串信息。
网上有很多指南,但我似乎无法将它们拼凑起来以完成我想要完成的事情,并且可以在一些帮助下真正做到。
那么 - 有人可以帮助我以最简单的方式将消息检查器添加到我的服务并从我的应用程序中附加标题吗?
谢谢!
过去两天我一直在尝试配置我的 WP7 应用程序以将消息头发送到我的 WCF Soap 服务。我只是想在每次通话时发送一串信息。
网上有很多指南,但我似乎无法将它们拼凑起来以完成我想要完成的事情,并且可以在一些帮助下真正做到。
那么 - 有人可以帮助我以最简单的方式将消息检查器添加到我的服务并从我的应用程序中附加标题吗?
谢谢!
对于 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);
}
如果在所有操作中这样做太多,另一种方法是创建一个包装客户端的类,并为所有操作执行此操作。仍然有很多代码,但至少会集中在一个点上,而不是分散在整个应用程序中。
最后一种选择(我现在记得)是使用消息检查器。它们不是平台的一部分,但根据您的情况,我已经实现了对检查器/格式化程序的一种支持,如http://blogs.msdn.com/b/carlosfigueira/archive/2011/上的博客文章所示06/21/wcf-extensibility-extensibility-in-windows-phone-and-silverlight-3.aspx。对于简单的场景,它应该可以正常工作。