Добрый день, как передать клиенту сообщение, которое я передаю в брошенное исключение в кастомной сервисе? Спасибо.
Нравится
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";
}
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать