Asp.net web api JSON请求中的$type不';我不能在WebAPI中工作

Asp.net web api JSON请求中的$type不';我不能在WebAPI中工作,asp.net-web-api,Asp.net Web Api,它在.net核心WebAPI中,在下面的代码中不读取$type // POST api/values [HttpPost("Order")] public string Order([FromBody] OrderRequest rq) { var a = new OrderRequest { Version = "12", Typea = new MsgType { A = new MsgTypeA

它在.net核心WebAPI中,在下面的代码中不读取$type

// POST api/values
[HttpPost("Order")]
public string Order([FromBody] OrderRequest rq)
{
    var a = new OrderRequest 
    {
        Version = "12",
        Typea = new MsgType
        {
            A = new MsgTypeA
            {
                Item = new MsgSubTypeA
                {
                    SubA = "TEST"
                }
            }
        }
    };

    return JsonConvert.SerializeObject(a, Formatting.Indented, new JsonSerializerSettings
    {
        TypeNameHandling = TypeNameHandling.Auto//.All
    });
}
请求是

{
   "Typea":    {
      "A": {"Item":       {
         "$type": "Services.WebReference.MsgSubTypeA, Services.WebReference",
         "SubA":"TEST"
         }
      }}
   }
}
它不能读取$type,也不能将“Item”转换为正确的类型,而是转换为它的基类。但是,每个JsonConvert.SerializeObject生成的响应显示相同的JSON

怎么了?

现在已经解决了

public string Order([FromBody] JObject rq)
{
    var obj = JsonConvert.DeserializeObject<OrderRequest>(rq.ToString(), new JsonSerializerSettings
    {
        TypeNameHandling = TypeNameHandling.Auto
    });

请求对象在rq中。您在控制器中的何处使用该对象?@MarcusH sorry。。我不理解你的问题。这对我帮助很大,但在我的案例中,我有两个不同的项目,因为名称空间不同,所以我使用replace来解决它,以更改Json对象中错误的名称空间。
services
    .AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto;
    })