扩展WCF压缩/自定义标头

时间:2015-09-21 08:10:43

标签: c# vb.net wcf xamarin wcf-extensions

我正在开发一个应用程序,它将部署在包括Windows Phone在内的各种平台上。因此,我只能访问WCF Compact / Portable类。

我需要能够捕获每个传出请求和传入响应,以便为请求添加标头,并从响应中读取标头。

扩展标准WCF时,我可以使用自定义行为实现此目的,但是在WCF compact中不支持此功能,因此,我可以使用以下代码将标头附加到特定请求:

CalculatorServiceClient client = new CalculatorServiceClient();
using(new OperationContextScope(client.InnerChannel)) 
{
    // We will use a custom class called UserInfo to be passed in as a MessageHeader
    UserInfo userInfo = new UserInfo();
    userInfo.FirstName = "John";
    userInfo.LastName = "Doe";
    userInfo.Age = 30;

    // Add a SOAP Header to an outgoing request
    MessageHeader aMessageHeader = MessageHeader.CreateHeader("UserInfo", "http://tempuri.org", userInfo);
    OperationContext.Current.OutgoingMessageHeaders.Add(aMessageHeader);

}

但是,我无法在此示例中捕获响应标头。我也担心这不是线程安全的(多个请求可能同时发生)。最后,我希望以对开发人员透明的方式实现此功能 - 这样他们就不需要对请求做任何特殊操作。我想我应该能够使用IClientMessageFormatter的东西来实现它,但是我不知道如何在WCF compact中实现它。

非常感谢任何帮助。

由于 大卫

0 个答案:

没有答案