Операция вызова myMethod завершилась неудачно в RIA Services в Silverlight - PullRequest
1 голос
/ 25 апреля 2011

У меня есть служба RIA WCF на стороне сервера, которая специально выдает исключение, потому что пользователь ввел недопустимое значение.Это исключение встречается по проводам, однако я не могу понять, как его поймать.В настоящее время у меня есть следующий код:

try
{
  DomainContext.CalculateRequest(OnCalculateCompleted, null);
}
catch (Exception ex)
{
  MessageBox.Show("here");
}

...

private void OnCalculateCompleted(InvokeOperation response)
{
  try
  {
    if (response.HasError == false)
    {
      // Do stuff with result
    }
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
}

Как мне обрабатывать исключения, выдаваемые операцией на стороне сервера на стороне клиента?Ни одно из моих заявлений об уловах не срабатывает.Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

На стороне клиента InvokeOperation.HasErrors будет true, и вы можете получить объект Exception из InvokeOperation.Error. Обратите внимание, что если вы обработали ошибку, вам также следует позвонить MarkErrorAsHandled().

Ваш OnCalculateCompleted может выглядеть примерно так.

private void OnCalculateCompleted(InvokeOperation response)
{
  if (response.HasError == false)
  {
    // Do stuff with result
  }
  else
  {
    MessageBox.Show(response.Error.Message);
    response.MarkErrorAsHandled();
  }
}
0 голосов
/ 25 апреля 2011

Да, потому что в обратном вызове (OnCalculateCompleted) исключение не будет распределено. Исключение будет находиться в свойстве response.Error.

Но будьте осторожны, потому что ваше исключение на стороне сервера НЕ будет найдено в ответе. Ошибка!

Вы должны переопределить метод OnError вашего DomainService, упаковать исключение на стороне сервера с помощью кодов ошибок или чего-то еще, а на стороне клиента (SL) вы должны распаковать его снова.

...