Добрый день, как передать клиенту сообщение, которое я передаю в брошенное исключение в кастомной сервисе? Спасибо.
Нравится
3 комментария
Лучший ответ
8 апреля 2021 17:35
Илья Белов,
Примерно так:
[OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public object SomeServiceMethod(object requestConfig) { try { return new { ErrorMessage = SomeLogicMethod(requestConfig) }; } catch (System.Exception ex) { return new { ErrorMessage = ex.Message }; } } public object SomeLogicMethod(object requestConfig) { CheckErrors(); // Some logic return "response"; }
8 апреля 2021 12:21
Нужно вручную обработать данное исключение.
В веб-сервисе try..catch, который ловит исключение, и сервис возвращает объект, где есть сообщение ошибки.
На клиенте уже обработать, что если веб-сервис вернул сообщение ошибки, то показать его в модальном окне.
8 апреля 2021 12:48
Владислав Литвинчук,
У меня, есть некий пулл сообщений о проваленной валидации
private void CheckErrors() { if (_errorsPool.Count == 0) return; var sb = new StringBuilder(); _errorsPool.ForEach(x => sb.AppendLine(x)); throw new Exception(sb.ToString()); }
Сервис вызываю с помощью ServiceHelper. Response с ошибкой содержит в себе много лишней информации, в т.ч. стек вызовов. Тут у меня загвоздка, как передать конкретные сообщения.
8 апреля 2021 17:35
Илья Белов,
Примерно так:
[OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public object SomeServiceMethod(object requestConfig) { try { return new { ErrorMessage = SomeLogicMethod(requestConfig) }; } catch (System.Exception ex) { return new { ErrorMessage = ex.Message }; } } public object SomeLogicMethod(object requestConfig) { CheckErrors(); // Some logic return "response"; }
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать