2012-02-06 2 views
1

У меня есть служба WCF, которую я добавил в мой проект Monotouch, используя инструкции here. Служба работает, но когда он бросает FaultException, клиент бомбу с ошибкой:FaultExceptions в WCF и Monotouch не сериализуются

Expected element 'ExceptionDetail' in namespace 'http://schemas.datacontract.org/2004/07/System.ServiceModel', but found Element node 'MyTypeException' in namespace ...

Я настройкой клиента программно

BasicHttpBinding binding = new BasicHttpBinding(); 
binding.Name = "BasicHttpBinding_IService"; 
binding.MaxBufferSize = 2147483647; 
binding.MaxReceivedMessageSize = 2147483647; 
binding.Security.Mode = BasicHttpSecurityMode.None; 
EndpointAddress address = new EndpointAddress("http://myaddress.com/MyService.svc"); 
LoyaltyClient client = new LoyaltyClient(binding, address); 

Есть идеи?

ответ

4

Это ошибка в MonoTouch (которая была filedseveraltimes).

Исправлена ​​ошибка, и исправление, скорее всего, будет включено в следующую версию после 5.2 (хотя вы можете получить исправление, если обратитесь в службу поддержки).


обновление: 13 ноября 2014

Для пользователей поражающих этот вопрос в более поздних версиях (после Xamarin.iOS 7, например), обратите внимание, что реализация Mono WCF требует[FaultContract] при десериализации FaultException<T> экземпляры, которые используют настраиваемые типы T для деталей исключения.

Например, вам нужно добавить атрибут [FaultContract] к методу, который бросает FaultException в договоре на стороне сервера службы:

[OperationContract] 
[FaultContract(typeof(ContentFaultType))] 
void MyMethodThatThrowsAFaultException(); 

После развертывания этого изменения изменения на стороне сервера вам нужно для повторного создания прокси-сервера Silverlight на стороне клиента с использованием SlSvcUtil.

0

Похоже, вы не объявили класс сбоев, используя FaultContractAttribute. Когда вы этого не сделаете, схема класса сбоя не входит в WSDL, поэтому клиент не знает об этом.

+0

Согласно разработчику службы (у меня нет доступа к нему) указан атрибут –

+0

И по WSDL также есть ошибка. –

Смежные вопросы