Я пытаюсь перенести какой-то существующий код расширения WCF в приложение Xamarin, предназначенное для iOS, WinPhone и Android. Код в настоящее время работает в приложении для настольных компьютеров без каких-либо проблем.Xamarin WCF IClientMessageInspector/Пользовательские заголовки
По сути, весь код выполняет ловушку каждого исходящего вызова службы WCF и добавляет некоторые заголовки http, затем улавливает ответ и считывает любые возвращенные заголовки. Это достигается с помощью пользовательского поведения и IClientMessageInspector в коде и настроить в 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>
К сожалению, я, кажется, не имеет app.config в моем проекте Xamarin так начал смотреть на ручное добавление поведения через код. Я видел много примеров, показывающих использование:
myServiceClient.Enpoint.Behaviors.Add (...)
Однако, я, кажется, не имеют доступа к свойству Поведения моей Endpoint (System.ServiceMode .Description.ServiceEndpoint) из App.cs в моем приложении Xamarin. У меня есть доступ только к адресу, привязке, контракту и имени.
Может ли кто-нибудь указать мне в правильном направлении. Как уже упоминалось выше, все, что я хочу сделать, это присоединить некоторые заголовки к каждому вызову службы 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 (Classic)
Благодаря Дэвид
Я прочитал эту статью. Эта статья очень хорошая. Но он объясняет, как добавить пользовательский заголовок в запрос WCF. Но вы упомянули в вопросе, что вам также нужно «поймать ответ и прочитать все заголовки, которые были возвращены». Итак, я хочу знать, как вы можете это достичь? –