Swagger/Swashbuckle 仅为 MVC 核心应用程序中的 API 控制器生成文档

Swagger/Swashbuckle doc generation only for API controllers within an MVC core app

我们有一个带有常规 MVC 控制器的 ASP.NET MVC 核心应用程序。此外,我们在 Controllers 文件夹中有一个名为“API”的子文件夹,其中包含少量 API 个控制器。

我们在 .AddSwaggerGen 中使用 .IncludeXmlComments 方法来获取我们项目中的 XML 文档。

但是,它也为我们所有的常规控制器获取 XML。

有没有办法过滤掉 'regular' 控制器,或者 select 只有 API 控制器以包含在 swagger 文档中?

看看DocInclusionPredicate,应该可以解决你的问题

// Startup.cs
services.AddSwaggerGen(options => 
    options.DocInclusionPredicate((docName, apiDesc) =>
    {
        if (!apiDesc.TryGetMethodInfo(out MethodInfo methodInfo)) return false;

        // Check if methodInfo is in the right assembly
        // or has the right namespace or version etc.
        bool isMethodIncluded = /* true or false */;

        return isMethodIncluded ;
    });
);