gpt4 book ai didi

c# - 使用 [FromBody] 并能够处理无效输入

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:41 27 4
gpt4 key购买 nike

在 ASP.NET Core(本例中为 2.1)的 Controller 中使用 [FromBody] 时,它会处理所有到指定模型的转换并确保模型有效。这意味着如果提供的输入格式错误, Controller 方法甚至不会被调用。

  1. 如何实现即使输入无效也能调用我的 Controller 方法,以便我自己处理错误情况?
  2. 有没有一种方法可以编写我自己的中间件,让它以我的系统需要的方式记录无效输入,或者甚至有一个我可以使用的默认中间件?

最佳答案

在 asp.net core 2.1 中,ApiController 属性为 introduced作为选择加入特定于 Web API 的约定和行为的方式。在启动时使用 CompatibilityVersion.Version_2_1 标志来设置 compatibility 的级别.

新行为是验证错误将 automatically trigger an HTTP 400 response .如文档中所述,抑制此行为非常容易:

services.Configure<ApiBehaviorOptions>(options =>
{
options.SuppressModelStateInvalidFilter = true;
});

在这种情况下,您可以照常验证模型:

if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

至于你的第二个问题,这个范围太广了:

... to log invalid inputs in the way my system needs it ...

filters (如 ExceptionFilterAttribute),您可以使用。也许这就是您要找的东西?

关于c# - 使用 [FromBody] 并能够处理无效输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52343319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com