Необработанное исключение с использованием FaultException <T>с приложением WCF и WP7 - PullRequest
1 голос
/ 02 декабря 2010

Я использую службу WCF из приложения WP7. Оба находятся в одном решении VS. Все работало нормально, пока я не попытался вернуть FaultException.

При выдаче FaultException из моей службы WCF я получаю сообщение "Необработанное исключение типа 'System.ServiceModel.FaultException`1' произошло в System.ServiceModel.dll" в EndInvoke в моем прокси. Если я нажимаю продолжить, исключение не всплывает. Мой код обработчика никогда не срабатывает.

Кажется, у меня все правильно настроено. Я видел множество примеров, так как я провел целый день, прочесывая сеть для помощи в решении этой проблемы. Если я перестану выдавать FaultException, мое приложение будет работать нормально.

В диалоге VS Debug> Exceptions я попытался отключить FaultException и FaultException'1 в CLR / System.ServiceModel. Я также попытался перейти в меню «Инструменты»> «Параметры», «Отладка»> «Общие» и отключить «Включить помощник по исключениям» и «Включить только мой код (только управляемый)». Ни один из них не позволил исключительной ситуации всплыть на моем вызывающем методе в приложении. .

Код интерфейса -

[OperationContract]
[FaultContract(typeof(NotAuthorizedException))]
List<MyResult> GetValues(DateTime beginDate, DateTime endDate);

Тип исключения -

[DataContract]
public class NotAuthorizedException
{
    [DataMember]
    public string Message { get; set; }
}

Код сервера для выдачи исключения -

throw new FaultException<NotAuthorizedException>(
    new NotAuthorizedException(),
    new FaultReason("Not authorized."),
    new FaultCode("Sender"));

Звонок клиента в службу WCF -

try
{
    MyServiceClient myService = new MyServiceClient();
    myService.GetValuesCompleted += new EventHandler<GetValuesCompletedEventArgs>(myService_GetValuesCompleted);

    myService.GetValuesAsync(DateTime.Now, DateTime.Now.AddMonths(6));
}
catch (FaultException<NotAuthorizedException>)
{
    //handle error here
}

Где он ломается (в Reference.cs) -

System.Collections.ObjectModel.ObservableCollection<Namespace.MyService.MyResult> _result = ((System.Collections.ObjectModel.ObservableCollection<Namespace.MyService.MyResult>)(base.EndInvoke("GetValues", _args, result)));

Прокси-код - это неизмененный код, сгенерированный из пункта меню «Добавить справочник услуг».

Это должно быть что-то простое, но я просто не вижу этого!

1 Ответ

3 голосов
/ 02 декабря 2010

Я считаю, что вы должны поймать FaultException<NotAuthorizedException> на myService_GetValuesCompleted вместо того, где вы делаете это сейчас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...