У меня есть 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) Конфликт."
Я не знаю, как читатьточное сообщение об ошибке в моем веб-приложении и отображение его пользователю.Пожалуйста, помогите.