Asp.net web api .Net 5 webAPI:使用自定义ValidationAttribute时的奇怪行为

Asp.net web api .Net 5 webAPI:使用自定义ValidationAttribute时的奇怪行为,asp.net-web-api,.net-5,Asp.net Web Api,.net 5,我们在控制器中有一个方法: [HttpDelete("deleteSelected")] [ProducesResponseType(StatusCodes.Status204NoContent)] public async Task<IActionResult> DeleteSelectedMessages( [FromQuery] [RequiredArrayShouldHaveItems] long[] selectedIds) {

我们在控制器中有一个方法:

[HttpDelete("deleteSelected")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
public async Task<IActionResult> DeleteSelectedMessages(
    [FromQuery]
    [RequiredArrayShouldHaveItems]
    long[] selectedIds)
{
  await _inputServicesService.DeleteSelectedMessagesAsync(selectedIds);
  return NoContent();
}
我已经注释掉了validation.success行,因为我想讨论返回的对象

因为我使用selectedId调用该方法,如下所示:

https://localhost:5001/InputServices/deleteSelected/?selectedIds=-一,

那么答案是:

{
    "errors": {
        "selectedIds": [
            "Should not be empty!"
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-9ac3f5511df2fb43bd3f222b63045633-1c68d7563cecc944-00"
}
{
    "errors": {
        "": [
            "Should not be empty!"
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-c741cd30434292488074e58d0926a368-da7e2593f7e64d48-00"
}
但是如果我调用该方法时没有任何参数,例如:

https://localhost:5001/InputServices/deleteSelected/

那么答案是:

{
    "errors": {
        "selectedIds": [
            "Should not be empty!"
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-9ac3f5511df2fb43bd3f222b63045633-1c68d7563cecc944-00"
}
{
    "errors": {
        "": [
            "Should not be empty!"
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "00-c741cd30434292488074e58d0926a368-da7e2593f7e64d48-00"
}
为什么上一个示例中的propertyname为空?

看起来自定义ValidationAttribute在参数上无法正常工作。如果你在一个对象的属性上使用它,一切都很好。