在我的项目中,我按如下方式配置路由:
config.Routes.MapHttpRoute(
name: "ApiLogin",
routeTemplate: "Api/Default/{controller}/{action}",
defaults: new { action = "Get" }
);
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "Api/{controller}/{action}",
defaults: new { action = "Get" },
constraints: null,
handler: sessionHandler
);
一个路由不使用HttpMessageHandler
而另一个路由不使用Swagger
。
使用.bat
生成文档时,它的生成重复(每个路由一个)。
有没有办法抑制某些路由?
答案 0 :(得分:1)
我假设您使用的是Swashbuckle,我不是它的专家。我在github上关注了这个discussion并提出了以下解决方案。您需要创建以下类:
public class FilterRoutesDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
var keys = swaggerDoc.paths.Keys.Where(x => x.Contains("/api/Default/")).ToList();
foreach (var key in keys)
swaggerDoc.paths.Remove(key);
}
}
然后在SwaggerConfig.cs中添加以下行:
.EnableSwaggerUi(c => { c.DocumentFilter<FilterRoutesDocumentFilter>(); }
似乎工作正常。希望这会有所帮助。