【发布时间】:2020-05-18 20:27:24
【问题描述】:
当我使用正确的 Json 请求 {"Token": "string", "Minutes": 0} 从 Swagger 调用我的服务时,会调用 OnActionExecuting。但是,如果我在缺少参数{ "Token": "string", "Minutes": }(Minutes 的缺失编号)的情况下提出请求,则OnActionExecuting 不存在。
更多背景信息:
Web API 项目AspNetCore project 2.2.0
将接收请求的控制器:
[HttpPost]
[ServiceFilter(typeof(ValidationAPIFilter))]
[Route("ResetPendingTimeout")]
public IActionResult ResetTimeout([FromBody]ResetTimoutRequest resetTimoutRequest)
public class ValidationAPIFilter : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext context) {}
OnActionExecuting 用于验证传递给ResetTimeout(...) 操作的参数
public class ResetPendingTimoutRequest
{
public ResetPendingTimoutRequest();
public string Token { get; set; }
public long Minutes { get; set; }
}
招摇结果:
{
"Errors": {
"Minutes": [
"Unexpected character encountered while parsing value: }. Path 'Minutes', line 5, position 0.",
"Unexpected character encountered while parsing value: }. Path 'Minutes', line 5, position 0."
]
},
"Title": "One or more validation errors occurred.",
"Status": 400,
"traceId": "80000049-0000-f900-b63f-84710c7967bb"
}
【问题讨论】:
-
在这种情况下你的 API 方法会被调用吗?
-
@Rahul 不,根本没有被调用。
-
您在 Swagger 中收到什么响应代码?
-
@AdamGreene 我刚刚用 Swagger 回复更新了我的原始问题。谢谢!
标签: c# asp.net-core asp.net-web-api