问题描述
我们有一个带有常规MVC控制器的ASP.NET MVC Core应用程序。此外,我们在Controllers文件夹中有一个名为“ API”的子文件夹,其中包含少量API控制器。
我们正在.IncludeXmlComments
中使用.AddSwaggerGen
方法来获取项目中的XML文档。
但是,它也为我们所有的常规控制器提供了XML。
是否有办法过滤掉“常规”控制器,或者仅选择API控制器以包含在一般文档中?
解决方法
看看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 ;
});
);