Nai*_*tel 5 asp.net-core-webapi asp.net-core-2.1
XYZController.cs
[HttpPost]
public async Task<ActionResult> Post([FromBody] T inputContext)
{
var outputContext = Process(inputContext);
return StatusCode(200, outputContext );
}
Run Code Online (Sandbox Code Playgroud)
启动文件
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddJsonOptions(options =>
{
UpdateJsonSettings.ConfigureJsonFormatter(options.SerializerSettings);
});
}
Run Code Online (Sandbox Code Playgroud)
更新JsonSettings.cs
internal static void ConfigureJsonFormatter(JsonSerializerSettings settings)
{
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
settings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
settings.Converters.Add(new StringEnumConverter());
}
Run Code Online (Sandbox Code Playgroud)
XYZ 控制器的 HttpResponse 尝试 1:
{ "$id": "1", "bill": { "$id": "2", "type": "TYPE1",
XYZ 控制器的 HttpResponse 尝试 2: -- 不以 $id 1 开头
{ "$id": "28", <--- 不知道为什么第二个请求 $ID 以 28 开头 :( --> "bill": { "$id": "29" , "type": " TYPE1",
XYZ 控制器的 HttpResponse 尝试 3: -- 不以 $id 1 开头
{ "$id": "55", <--- 不知道为什么第二个请求 $ID 以 55 开头 :( --> "bill": { "$id": "56" , "type": " TYPE1",
我正在使用 Newtonsoft.Json (11.0.2)
我经过惨痛的教训才学到这个!
问题出在 StatusCode 方法中,它返回 ObjectResult。将方法签名更改为 IActionResult 并返回 JsonResult 后,它工作正常。此外,API 性能也得到了提高。
[HttpPost]
public async Task<IActionResult> Post([FromBody] T inputContext)
{
var outputContext = Process(inputContext);
var jsonResult = new JsonResult(outputContext);
jsonResult.StatusCode = 200;
return jsonResult;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
221 次 |
最近记录: |