【发布时间】:2021-03-28 07:07:13
【问题描述】:
我的旧 .net core 2 web api 项目使用 newtonsoft 将数据表序列化为 json,然后我将其作为 json 传递回前端(角度)站点,即使用以下内容:
- 创建一个函数,即
public IActionResult Countries_Get(),查询一个sql server数据库并填充一个新的sql数据表,即DataTable dtCountries = clsDB.Execute_To_DataTable("selCountries", lstDBParams, Request);。 - 从函数返回数据表,带有 HTTPStatusCode,例如 Ok ie
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 命名空间(如this answer 中所写)来使其工作 -
感谢@DavidG 的输入,我在网络开发方面还是个新手,因此可能从一开始就没有以正确的方式使用网络 API。如果我要离开数据表,你会建议哪条路线?...如前所述,这个项目是一个更大的项目的前兆,因此我想以正确的方式而不是快速的方式来做。
-
DataTable只是一种现在很少使用的遗留技术。使用普通 C# 类来保存对象更为常见。关于如何查询数据库并返回 JSON 的教程数不胜数,通常使用类似实体框架的 ORM。 -
好的,我会考虑试一试,看看是否能解决问题并为我指明前进的方向。干杯
标签: c# json sql-server angular .net-5