【发布时间】:2021-03-25 19:02:53
【问题描述】:
在 .NET Core 3.1 应用程序中启用 Microsoft.AspNetCore.Mvc.Api.Analyzers 并在产生这些类型的返回码的操作方法之上应用以下过滤器后,它会按预期工作:它会产生警告如果缺少响应代码属性,如果没有,它们就会消失。
[HttpGet("{id}")]
[AuthorizeAllRoles]
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(string))]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status200OK)]
public async Task<IActionResult> GetSomething(string id)
{
//.. does stuff and returns other action types
await Task.Run(() =>{Thread.Sleep(1000);});
return BadRequest("my error message");
}
但是带有错误消息的 BadRequest 响应对项目中的所有控制器来说都是通用的,所以我将其从控制器中删除并将其重新应用为全局过滤器 .这也有效。我可以在我的 Swagger 文档中看到这些状态代码。
但分析器现在会产生警告:
API1000: "Action method returns undeclared status code '400'."
在控制器类级别应用属性时结果相同。
我当然可以忽略这些警告。
问题是我是否在某处遗漏了一些配置,以便分析器检测这些全局或类级别的属性。
【问题讨论】:
标签: c# asp.net-core asp.net-core-3.1