我正在尝试调试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)]