Как перехватить пользовательские сообщения об ошибках (в веб-клиенте ASP.NET Core), отправленные из веб-API ASP.NET Core - PullRequest
0 голосов
/ 15 июня 2019

У меня есть ASP.NET Core Web API, в который я отправляю запросы из моего ASP.NET Core Web Application.Я реализовал глобальную обработку ошибок в своем веб-API и возвращаю настроенные сообщения об ошибках.Я проверил это на POSTMAN, и это, кажется, работает хорошо.Моя проблема в том, что, когда я делаю запрос из своего веб-приложения, и API возвращает ошибку, я не вижу / не могу получить доступ к своему пользовательскому сообщению об ошибке.Например, если я пытаюсь вставить запись и запись уже существует, я возвращаю код ошибки 409 и сообщение, объясняющее пользователю, что запись существует.Это в формате JSON, как показано ниже ...

{
    "StatusCode": 409,
    "Message": "The donor - AGRA - already exists. Please provide a unique donor Id"
}

Код статуса предназначен для собственного потребления в веб-приложении.Я хотел бы отобразить сообщение об ошибке (для пользователя) в веб-приложении.

Кроме того, я использую AJAX, чтобы опубликовать свой запрос к API и проверить ответы.

function addDonor(obj, url, text) {
    swal({
        title: 'Do you want to proceed?',
        text: text,
        type: 'warning',
        buttons: true,
        dangerMode: true,
    })
    .then(function (isConfirm) {
        if (isConfirm) {
            $.ajax({
                type: 'post',
                url: url,
                data: obj,
                dataType: 'json',
                async: true,
                success: function (res, statusText, xhr) {
                    if (res) {
                        getDonors();
                        $('#adddonormodal').modal('hide');
                        swal({
                            title: "Success!",
                            text: res.message,
                            icon: "success",
                        });
                     } else {
                        swal({
                            title: "Error!",
                            text: res.message,
                            icon: "error",
                        });
                    }
                }
            });
        }
    });

}

Я пытался реализовать Try..Catch в своем веб-приложении, но я получаю только код состояния 409 без специального сообщения.То же самое касается обработки глобальных ошибок в веб-приложении.

Точнее, именно так я отправляю запрос в API

public static string PostToApi(string url, string Postdata, string header)
        {
            try
            {
                var request = (HttpWebRequest)WebRequest.Create(url);
                var data = Encoding.ASCII.GetBytes(Postdata);
                request.Method = "POST";
                request.ContentType = "application/json";
                request.ContentLength = data.Length;
                request.Headers.Add("Authorization", header);
                using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); }

                var response = new StreamReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()).ReadToEnd();

                return response;
            }
            catch (Exception ex)
            {
                string err = CleanRes(ex.Message);
                return err;
            }

        }

Мне нужно получить сообщение об ошибке JSON вex.Message.Как я объяснил выше, я получаю код состояния только с общим сообщением об ошибке ... "Удаленный сервер возвратил ошибку: (409) Конфликт."

Я не знаю, как читатьточное сообщение об ошибке в моем веб-приложении и отображение его пользователю.Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...