Xamarin WCF IClientMessageInspector /自定义标题

时间:2015-09-20 09:16:45

标签: wcf xamarin xamarin.ios xamarin.forms

我正在尝试将一些现有的WCF扩展代码移植到一个针对iOs,WinPhone和Android的Xamarin应用程序中。该代码目前存在于Windows桌面应用程序中,没有任何问题。

基本上,所有代码都会捕获每个传出的WCF服务调用并附加一些http头,然后捕获响应并读取已返回的任何头。这是使用代码中的自定义行为和IClientMessageInspector实现的,并在我现有的Windows桌面应用程序的app.config中配置:

  <behaviors>
    <endpointBehaviors>
      <behavior>
        <MyBehavior ConsumerKey="878846DF-2E7B-4165-8542-9F68583DD7D4" ConsumerType="Windows Forms" />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <extensions>
    <behaviorExtensions>
      <add name="MyBehavior" type="MyBehavior.Objects.ServiceLayer.WCFExtensions.ConsumerBehaviorElement, MyBehavior.Objects.ForConsumers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </behaviorExtensions>
  </extensions>

不幸的是,我的Xamarin项目似乎没有app.config,所以开始考虑通过代码手动添加行为。我看过很多例子展示了使用:

myServiceClient.Enpoint.Behaviors.Add(...)

但是,我似乎无法从我的Xamarin应用程序中的App.cs访问我的Endpoint(System.ServiceMode.Description.ServiceEndpoint)的Behaviors属性。我只能访问地址,绑定,合同和名称。

任何人都可以指出我正确的方向。如上所述,我想要做的就是为每个WCF服务调用附加一些标头,并在响应中读取一些标头。

更多信息:

调用我的WCF服务的示例如下:

    private void CallService()
    {

        MyAuthenticationService.AuthenticationServiceClient _ws = new MyAuthenticationService.AuthenticationServiceClient();

        _ws.AuthenticateCompleted += _ws_AuthenticateCompleted;
        _ws.AuthenticateAsync(new MyAuthenticationService.AuthenticationRequest1());


    }

    private void _ws_AuthenticateCompleted(object sender, MyAuthenticationService.AuthenticateCompletedEventArgs e)
    {
        throw new NotImplementedException();
    }

最后,我的Xamarin项目的目标是:

  • .Net Framework 4.5
  • Windows 8
  • Windows Phone Silverlight 8
  • Xamarin.Android
  • Xamarin.iOs
  • Xamarin.iOS(经典)

由于 大卫

1 个答案:

答案 0 :(得分:0)

在Xamarin论坛上得到了答案,这正是我所需要的。

Link to their sorting tutorial

http://forums.xamarin.com/discussion/comment/153751#Comment_153751