我正在尝试在 3.0 api 上访问端点。我传递所有参数的方式与现有应用程序使用字符串类型字典的方式相同。但是现在我收到了一个 400 错误的请求,这是因为属性 UserId 是一个 int。
public class ConfirmCreatedRequest
{
public int UserId { get; set; }
public string Password { get; set; }
public string MemorableWord { get; set; }
}
这里是一个使用原始字典并将字典更改为字符串,对象的json示例。
"{\"UserId\":\"90744\",\"Password\":\"\",\"MemorableWord\":\"\"}"
"{\"UserId\":90750,\"Password\":\"\",\"MemorableWord\":\"\"}"
问题是我不想这样做,因为它不安全。
我想知道3.0有什么变化,3.0.1有没有修复
最佳答案
默认序列化程序已从 Newtonsoft.Json
更改为 System.Text.Json
,因此某些序列化行为将发生变化。
如果您希望它的行为像在 2.x
中那样,您可以将 Newtonsoft.Json
设置为默认值:
services.AddMvc()
.AddNewtonsoftJson();
如果您想像使用新的 System.Text.Json
那样制作当前的 JSON 和类型序列化/反序列化,您可以在这里阅读:
https://github.com/dotnet/corefx/issues/39473
这个问题是由 Stackoverflows Nick Craver 提出的,其中有自定义转换器可以满足您的需求,并且有迹象表明有计划在 5.0
中支持“更宽松”的反序列化。
关于c# - 模型绑定(bind)从 2.2 更改为 3.0 Asp.Net Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59135681/