Web API 将类型不匹配的参数解析为缺失

Web API resolves parameters with mismatched types as missing

我正在使用 ASP.NET Core 来托管 Web API。我的订单控制器中定义了以下操作:

[HttpGet("list")]
public List<Order> List([FromQuery] int index = 0, [FromQuery] int length = 100)
{
    return GetOrders(index, length);
}

以下returns单单:

https://localhost:5000/api/v1/Orders/list?index=0&length=1

以下returns 100个订单:

https://localhost:5000/api/v1/Orders/list?index=0&length=a

似乎对于请求,任何无法转换为声明类型的参数都将被视为缺失,从而导致使用上面示例中的默认值,或值类型默认值,或引用类型为 null。

在这种情况下,最好让请求在使用不匹配的参数类型执行时失败,而不是让它继续使用 default/null 个值。

有没有办法修改这种行为?

此 link 全面描述了模型绑定在网络中的工作原理 api: https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

基于此,我会说您需要一个自定义模型联编程序,该联编程序在无法转换值时抛出异常。