Ошибки web сервисов

Расширенная информация об ошибках передается клиенту web сервиса в HTTP заголовках UltimaErrorCode, UltimaErrorText и UltimaUserReadableError. Первый – код ошибки, второй – текст, третий — флаг, нужно ли показывать ошибку конечному пользователю.

Коды 100-199 зарезервированы для ошибок базового решения. Например, ошибка аутентификации клиента имеет код 100.

Для того, чтобы вернуть расширенную информацию об ошибке, следует использовать класс ExtendedHttpError(код ошибки, текст ошибки, показывать ли пользователю):

 

throw new ExtendedHttpError(1234, "Error description", true);

35_important

Исключение ExtendedHttpError предназначено для использования только и непосредственно в коде web сервисов.

Использование его в других местах, как правило, означает задвоение логики – ситуацию, в которой различаются процедуры обработки данных для web и не для web. Этого следует тщательно избегать. При соблюдении правил исключение не потребуется выбрасывать нигде кроме кода web сервисов.

Для обработки расширенной информации об ошибках web сервиса клиентам ServiceStack следует получать данные http заголовков из исключения:

try

{

 var request = new GetNow();

 var response = client.Send(request);

}

catch (WebServiceException e)

{

 var errorCode = e.ResponseHeaders.GetValues("UltimaErrorCode");

 var errorText = e.ResponseHeaders.GetValues("UltimaErrorText");

}