Мой старый проект веб-api .net core 2 использовал newtonsoft для сериализации данных в json, которые я затем передал обратно на интерфейсный (угловой) сайт как json, то есть используя что-то вроде:
- Создайте функцию, то есть
public IActionResult Countries_Get()
, запросите базу данных сервера sql и заполните новую таблицу данных sql, то естьDataTable dtCountries = clsDB.Execute_To_DataTable("selCountries", lstDBParams, Request);
. - Вернуть данные из функции с кодом HTTPStatusCode, например Ok, т.е.
return Ok(dtCountries);
Приведенный выше код больше не работает в проекте .net 5.0 (запущенном заново) с ошибкой System.NotSupportedException: Serialization and deserialization of 'System.Type' instances are not supported and should be avoided since they can lead to security issues. Path: $.Columns.DataType.
.
Я читал, что это разработано Microsoft, поскольку использование нового пространства имен System.Text.Json небезопасно, я действительно хочу сделать это правильно, но после нескольких часов поиска я не приблизился к ответу.
Может кто-нибудь посоветовать, как сделать то же самое, что и исходное приложение.
Ваше здоровье
DataTable
, сейчас это очень старая технология, и есть много лучших вариантов. Но если вы застряли, вы можете заставить его работать, заставив свой проект использовать Newtonsoft вместо нового пространства имен System.Text.Json (как написано в этот ответ) - person DavidG   schedule 17.12.2020DataTable
- это просто устаревшая технология, которая сейчас редко используется. Чаще всего используются простые классы C # для хранения объектов. Существует бесчисленное множество руководств о том, как запрашивать базу данных и возвращать JSON, обычно с использованием ORM, такого как Entity Framework. - person DavidG   schedule 17.12.2020