防止基类属性初始化JSON.net

时间:2020-10-27 08:32:58

标签: asp.net-core json.net asp.net-core-webapi asp.net-core-3.1

我正在尝试调试asp.net核心3.1 REST API中的问题。此应用程序已从2.2升级到asp.net core 3.1。 asp.net core 3.1版本包括软件包 Microsoft.AspNetCore.Mvc.NewtonsoftJson ,因为默认情况下不提供此软件包。否则,我看不出太大的区别。 问题在于,以下所示的端点之一在2.2中可以正常工作,但在3.1中会引发异常。

    public async Task<ActionResult<MyResponse>> ActionMethod1([FromBody] ChildClass request){
 MyResponse response = new MyResponse();//Line 2
//Some code
}

ChildClass:Parent1{
public C_property1{get;set;}
public C_property2{get;set;}
public C_property3{get;set;}
}

Parent1:Parent2{
  public p1_property1{get;set;}
  public p1_property2{
    get{ return SomeClass.Somemethod(p1_property1)//Somemethod throws an exception
        }
  }
}

当我调试问题时,我注意到2.2版本没有尝试初始化Parent1的属性。但是3.1版本代码尝试初始化parent1属性。这使得SomeClass.Somemethod()被调用,从而引发异常。在控制器上,断点甚至没有到达第2行。目前尚不清楚为什么此版本的行为有所不同。

我认为可能是因为JSON.net解串器设置。我尝试在parent1的所有属性上添加以下内容,但没有用。请在这里建议可能发生的变化。

       [JsonIgnore] [JsonProperty(Required = Required.Default)]

0 个答案:

没有答案