在 net core 2.2 中隐藏 swagger 不良响应示例模型

cap*_*ang 9 c# swagger-2.0 asp.net-core-2.2

我将我的 netcore 2.1 项目升级到 2.2 并且我的 swagger 页面有问题。

以前在 swagger bad response 中,它只显示没有模型的“错误请求”。

但是在我升级到 net core 2.2 后,错误请求示例中显示了一个模型。下图。

我如何隐藏它以便它只显示“错误的请求”。

我已经使用 CustomApiConvention 进行了测试,但到目前为止还没有成功。

    [HttpGet("{id}")]
    [ProducesResponseType(StatusCodes.Status204NoContent)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    [ProducesResponseType(StatusCodes.Status404NotFound)]
    [ProducesDefaultResponseType]
    public async Task<ActionResult<Employee>> GetEmployee(int id)
    {
        var employee = await _context.Employee.FindAsync(id);

        if (employee == null)
        {
            return NotFound();
        }

        return employee;
    }
Run Code Online (Sandbox Code Playgroud)

我如何隐藏它以便它只显示“错误的请求”?

在此处输入图片说明

cap*_*ang 15

对于任何遇到同样问题的人。只需将其添加到您的代码中即可。

services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.ConfigureApiBehaviorOptions(options =>
{
    options.SuppressMapClientErrors = true;
});
Run Code Online (Sandbox Code Playgroud)

这将禁用问题详细信息响应。

https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.2#problem-details-for-error-status-codes

  • 太棒了,我已经找了好几天了!我正在使用`net5.0`,这对我有用:`services.AddControllers(x =&gt; x.Conventions.Add(new ApiExplorerVersionConvention())).ConfigureApiBehaviorOptions(x =&gt; { x.SuppressMapClientErrors = true; }) ;` (3认同)
  • `.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)` 给出了警告(在我的 ASP.NET Core 3.0 项目中),但不是更改为 `.Version_3_0`,只是将其完全忽略也可以。 (2认同)