У меня есть проблема, касающаяся исключения и ловушки исключений на стороне клиента. Все это хорошо работает, пока я не представил HTTP401. Это моя база, чем контроллер ручной коррекции OnExcpetion:jQuery ajax не улавливает 401
protected override void OnException(ExceptionContext filterContext)
{
var exception = HandleException.Handle(filterContext.Exception);
filterContext.Exception = exception;
if(exception is AuthenticationException)
filterContext.HttpContext.Response.StatusCode = 401;
else
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.ExceptionHandled = true;
filterContext.Result = new JsonResult()
{
Data = new { Message = filterContext.Exception.Message },
ContentType = "json"
};
}
Это мой AJAX вызов вместе с Succes и ошибок.
$.ajax(
{
type: 'POST',
url: loginRoute,
data: formData,
dataType: 'json',
processData: false,
contentType: false,
statusCode: {
401: function() {
$('#authenticationErrorMessage').text(xhr.responseJSON.Message);
$('#authenticationError').show();
}
},
success: function (responseData) {
$('#authenticationSucessMessage').text(responseData.Message);
$('#authenticationSuccess').show();
window.location.replace(responseData.Redirect);
},
error: function (xhr, ajaxOptions, thrownError) {
$('#authenticationErrorMessage').text(xhr.responseJSON.Message);
$('#authenticationError').show();
}
});
Проблемы состоят в том, что после завершения вызова не выдается ни код состояния, ни ошибка. Вызывается только успех. Если я установил свой StatusCode на 500, все будет работать нормально.
Это не проблема! Прочтите вопрос. – Rob
Я также хочу добавить, что использую OWIN Oauth. – Rob
Я нашел решение [здесь] (http://stackoverflow.com/questions/20149750/owin-unauthorised-webapi-call-returning-login-page-rather-than-401). – Rob