создание исключений ошибок в службе WCF и обработка в Silverlight - PullRequest
0 голосов
/ 11 июня 2011

Я выбрасываю исключение в сервисе с поддержкой Silverlight и ловлю его в моем клиенте Silverlight.Я сделал все в соответствии с руководством, но все еще получаю то, что я считаю неожиданным поведением.

Код от клиента

        try
        {
            client.ThrowFaultExceptionCompleted += (s, args) =>
            {
                DoCallback(args);
            };

            client.ThrowFaultExceptionAsync(new ThrowFaultExceptionRequest());
        }
        catch (FaultException<MyFaultException> myFex)
        {

        }
        catch (FaultException fex)
        {

        }

Вот код из службы

Класс My Custom Fault Exception

[DataContract]
public class MyFaultException
{
    private string _reason;
    private string _myExceptionStackTrace;

    [DataMember]
    public string Reason
    {
        get { return _reason; }
        set { _reason = value; }
    }

    [DataMember]
    public string MyExceptionStackTrace
    {
        get { return _myExceptionStackTrace; }
        set { _myExceptionStackTrace = value; }
    }
} 

Бит кода на стороне обслуживания, который генерирует исключение ошибки.В целях тестирования я вызываю этот метод из клиента.

    [OperationContract]
    [FaultContract(typeof(MyFaultException))]
    public void ThrowFaultException()
    {
        MyFaultException mfex = new MyFaultException();
        mfex.Reason = "No Reason!";
        mfex.MyExceptionStackTrace = "Long stack trace here";

        System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
        //throw new FaultException<MyFaultException>(mfex ,new FaultReason(new FaultReasonText("My Fault Reason Text here!")), new FaultCode("my fault code here"));
        throw new FaultException<MyFaultException>(mfex);
    }

независимо от того, выбрасываю ли я FaultException с одним параметром или с этими тремя параметрами в строке комментария, я получаю сообщение об ошибке в моем файле Reference.csв прокси-классе silverlight, подобном приведенному ниже

error message in reference.cs

, и он никогда не подходит ни к одному из блоков catch .. Это нормальное поведение?Теперь я должен отловить ошибку в методе обратного вызова DoCallback (args) и в этом методе проверить наличие (args.Error == null).Почему блок захвата не получил удар?

Спасибо за ваше время ...

1 Ответ

3 голосов
/ 15 октября 2012

Нашел что-то, что может быть полезно.Вам нужно изменить параметры отладки в Visual studio.

Перейти в Сервис -> Параметры -> Отладка -> Общие и снять флажки «Включить помощник по исключениям» и «Включить только мой код (только для управляемого)» *

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