Я ввел IErrorHandler
для моего сервиса, который должен вернуть 403 вместо o 400 в случае неправильной авторизации.
Вот как выглядит мой ProvideFault
метод:
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (((FaultException)error).Code.SubCode.Name == "FailedAuthentication")
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription =
"StatusCode is forced to change in order to have the correct response on authentication.";
}
}
Интересно, есть ли способ написать более приятную проверку для ошибки и ее кода состояния, или как получить исключение авторизации, а не FaultException
ведьма более общего характера ?. Мне не нравится проверять после строки FailedAuthentication
, и фактически ее авторизация не аутентификация ...