#json #asp.net-core-mvc
#json #asp.net-core-mvc
Вопрос:
У нас есть приложение, которое мы переносим с .NET Core 2.2 на .NET 5.0. Все работает так, как ожидалось, за исключением одной вещи. Когда мы сталкиваемся с исключением, мы перехватываем его и добавляем в список сообщений об ошибках, которые будут возвращены как JSON. Вот очень упрощенный пример:
public JsonResult TestingJson()
{
Response response = new Response();
try
{
throw new TimeoutException();
}
catch (Exception ex)
{
response.ErrorMessages.Add(new ErrorMessage {
Exception = ex,
Text = ex.Message,
CreatedDate = DateTime.Now
});
}
return Json(response);
}
Возвращаемый Json (ответ) выдает мне: «Ошибка синтаксиса: неожиданное завершение ввода JSON». Если я не добавлю «Exception = ex» при создании своего объекта ответа, все работает нормально. Кажется, что он не может преобразовать исключение в JSON. Моя проблема в том, что в ядре 2.2 все работало нормально. Я что-то пропустил в своей миграции? Я знаю, что это неопределенный вопрос, но я надеюсь, что кто-то сталкивался с чем-то подобным и, возможно, знает, чего мне не хватает.
Спасибо
Ответ №1:
asp.net ядро 2.2 используется Newtonsoft.Json
по умолчанию.В рамках работы по улучшению ASP.NET Основная общая структура, Newtonsoft.Json
(Json.NET ) был удален из ASP.NET Основная общая структура с тех пор, как asp.net ядро 3.0.
Чтобы удовлетворить ваши требования, вам необходимо добавить поддержку NewtonSoft:
1. Установите Microsoft.AspNetCore.Mvc.NewtonsoftJson
версию пакета 5.0.0.
2. Обновление при запуске.Настройте службы для вызова AddNewtonsoftJson
.
services.AddControllers()
.AddNewtonsoftJson();
Ссылка:
Комментарии:
1. Это все, чего мне не хватало. Спасибо, Рена, за вашу помощь!