我正在尝试将一些现有的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项目的目标是:
由于 大卫
答案 0 :(得分:0)
在Xamarin论坛上得到了答案,这正是我所需要的。
Link to their sorting tutorial
http://forums.xamarin.com/discussion/comment/153751#Comment_153751