忽略 Swagger 中的第 3 方控制器操作

Sve*_*ven 3 swagger swagger-2.0 asp.net-core

我有一个 ASP.NET Core 2.1 Web 应用程序,它通过 Web API 接口提供 DevExpress 报告。

我想使用 swagger 来向消费者展示使用情况并提供一些有关我的 Web API 的有用信息。但是,Swagger 因以下错误而崩溃:

NotSupportedException:操作的模糊 HTTP 方法 - DevExpress.AspNetCore.Reporting.QueryBuilder.QueryBuilderController.Invoke (DevExpress.AspNetCore.Reporting.v18.2)。操作需要 Swagger 2.0 的显式 HttpMethod 绑定

问题在于 Swagger 试图分析 DevExpress 的QueryBuilderController 中包含的 API 。但是,我不想大摇大摆地分析这些 3rd 方控制器。我现在的问题是如何在 swagger 中过滤/禁用 3rd 方库?

谢谢斯文

Sve*_*ven 11

我按照此处的建议使用自定义 DocInclusionPredicate 使其工作。

示例代码:

services.AddSwaggerGen(c =>
{
      c.DocInclusionPredicate((docName, apiDesc) =>
      {
          // Filter out 3rd party controllers
          var assemblyName = ((ControllerActionDescriptor)apiDesc.ActionDescriptor).ControllerTypeInfo.Assembly.GetName().Name;
          var currentAssemblyName = GetType().Assembly.GetName().Name;
          return currentAssemblyName == assemblyName;
      });
      c.SwaggerDoc("v1", new Info { Title = "FileService API", Version = "v1" });
});
Run Code Online (Sandbox Code Playgroud)