Catch возвращает пользовательскую страницу с ошибкой, а не сообщение об ошибке

#c# #ajax #asp.net-core

#c# #ajax #asp.net-core

Вопрос:

Я вызываю контроллер с помощью Ajax Post, в контроллере catch возвращает пользовательскую страницу с ошибкой вместо возврата сообщения об ошибке.

Контроллер Catch:

 catch (Exception ex)
{
    return BadRequest(ex.Message   " - "   ex.InnerException?.Message   Environment.NewLine   Environment.NewLine   ex.StackTrace);
}
 

Опубликовать Ajax:

 $.post({
    url: eapi   'pedido/'   id_empresa   '/'   token_emp   '/'   agendamentotf,
    data: JSON.stringify(vm.ped_post),
    headers: {
        "Content-Type": "application/json"
    },
    success: function(data) {
        var response = data;
    },
    error: function(error) {
        console.log(error.responseText);
    }
});
 

This error.responseText возвращает страницу с ошибкой, а не сообщение об ошибке.

Кто-нибудь может помочь?

Ответ №1:

Я не эксперт в сообщении jquery, но я обнаружил, что вы не вводите функцию ошибки там, где вы это делаете, но таким образом:

 $.post({
    url: eapi   'pedido/'   id_empresa   '/'   token_emp   '/'   agendamentotf,
    data: JSON.stringify(vm.ped_post),
    headers: {
        "Content-Type": "application/json"
    },
    success: function(data) {
        var response = data;
    }
    
})
.fail((xhr, status, error) => {
        console.log(error.responseText);
    });
 

вы можете увидеть это здесь

Ответ №2:

Ошибка заключается в том, что вы пытаетесь использовать $.post вместо $.ajax Вот ваш исправленный код:

 $.ajax({
     type: "POST",
     url: eapi   'pedido/'   id_empresa   '/'   token_emp   '/'   agendamentotf,
     data: JSON.stringify(vm.ped_post),
     headers: {
         "Content-Type": "application/json"
     },
     success: function(data) {
         var response = data;
     },
     error: function(XMLHttpRequest, textStatus, error) {
         console.log(error);
     }
 });
 

Ответ №3:

Похоже, ваш контроллер не настроен как контроллер API, и в этом случае вам может потребоваться изменить тип возвращаемого действия на JsonResult.

Ответ №4:

Попробуйте использовать простую строку в BadRequest, например return BadRequest("Test");

Я подозреваю, что этот код может вызвать еще одно исключение.

 ex.Message   " - "   ex.InnerException?.Message   Environment.NewLine   Environment.NewLine   ex.StackTrace