从 ASP.NET MVC 项目调用 .NET CORE 5 Web API 微服务时无法检索 BadRequest 错误

Can't retrieve BadRequest errors when calling .NET CORE 5 Web API microservice from ASP.NET MVC project

我正在尝试从 ASP.NET Core MVC 前端从使用 .NET Core 5 Web API 构建的微服务中检索 ModelState 验证错误。

假设我有一个看起来像这样的模型:

public class Comment
{
    public string Title { get; set; }
    [Required]
    public string Remarks { get; set; }
}

当我通过 Swagger 调用微服务中的 rest 端点更新 Comment 模型时,我得到了这样的响应体:

{
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "Remarks": [
      "The Remarks field is required."
    ]
  }
}

太棒了!这是我所期望的...但是,当我通过我的 MVC 项目调用此端点时,我似乎无法获得实际的“错误”。

这就是我调用其余端点的方式:

var client = _httpClientFactory.CreateClient("test");
HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(comment), Encoding.UTF8, "application/json"); 
HttpResponseMessage response = await client.PutAsync($"api/comments", httpContent);

响应对象只有 statusCodeBadRequest。我想提取有关错误的信息(显示“需要备注字段”的部分。)但我没有在 ContentHeaders 属性 或任何内容中看到它就这样。

我是微服务和 .NET Core 的新手 - 我做错了什么吗?我需要向 startup.cs 添加内容吗?我可以获得 BadRequest 状态但没有支持问题的详细信息,这似乎很奇怪。

提前致谢!

确保您的网络 api 控制器未使用 [ApiController] 声明。

Web Api 项目:

//[ApiController]
[Route("api/[controller]")]
public class CommentsController : ControllerBase
{
    [HttpPut]
    public IActionResult Put([FromBody] Comment model)
    {
        if(ModelState.IsValid)
        {
            //do your stuff...
            return Ok();
        }
        return BadRequest(ModelState);
    }
}

Mvc 项目:

HttpResponseMessage response = await client.PutAsync($"api/comments", httpContent);
var result = response.Content.ReadAsStringAsync().Result;