Swashbuckle在迁移到VS 2015后没有显示任何方法

时间:2015-09-14 16:58:25

标签: asp.net-web-api2 swagger swashbuckle

我使用Swashbuckle配置ASP.NET WebApi来显示swagger ui。我在IIS Express中从VS内部运行它。 解决方案是在VS 2013中,它工作正常。迁移到VS 2015后,swagger没有显示任何方法。没有错误,只是空列表。返回的回复是:

{"swagger":"2.0","info":{"version":"v4","title":"Swashbuckle Dummy API V4"},"host":"localhost:35622","schemes":["http"],"paths":{},"definitions":{}}

我查看了文档中的故障排除章节,但基于它,配置正常。 我接下来可以尝试什么?

1 个答案:

答案 0 :(得分:1)

我发现了这个问题。我简要描述一下情况: 我们有版本化API并使用自定义ControllerSelector(派生自DefaultHttpControllerSelector)来选择正确版本的控制器。 (API版本取自Http标头。) Controllers 文件夹中有子文件夹(如 V1 V2 ,..)和控制器类放在这些子文件夹中。

通常,对于文档生成,它使用由ApiExplorer提供的DefaultHttpControllerSelector类,它在内部管理由控制器名称键入的HttpControllerDescriptors列表(没有'控制器&#的短名称) 39;后缀)。当它构建此列表时,它会检查控制器名称是否已添加到列表中,如果是,它不仅不添加另一个,而且还删除已添加的控制器名称。 在我们的例子中,它意味着没有具有多个版本的控制器的描述符。

我能够通过在我们的自定义控制器选择器中覆盖IHttpControllerSelector.GetControllerMapping()并传入带有前缀的控制器名称来修复它,这也是一个有效的路由。我们的自定义ControllerSelector也接受在URL中传递的版本。