我有一个ASP.NET Core 2.1 Web App,它通过Web API接口提供DevExpress报告。
我想用招摇的方式向消费者展示用法,并提供一些有关我的Web API的有用信息。 但是,Swagger崩溃并显示以下错误:
NotSupportedException:行为不明确的HTTP方法-DevExpress.AspNetCore.Reporting.QueryBuilder.QueryBuilderController.Invoke(DevExpress.AspNetCore.Reporting.v18.2)。动作需要Swagger 2.0的显式HttpMethod绑定
问题在于Swagger试图分析DevExpress的 QueryBuilderController 中包含的API。但是,我不想大张旗鼓地分析这些第三方控制器。 我现在的问题是如何迅速地过滤/禁用第三方库?
谢谢 斯文
答案 0 :(得分:1)
我使用自定义DocInclusionPredicate作为suggested here使它正常工作。
示例代码:
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" });
});
答案 1 :(得分:0)
您可以使用Swaggers DocumentFilter
实现这一目标,下面是一个示例:DocumentFilter usage example