0

我用 Swashbuckle 配置了 ASP.NET WebApi 来显示招摇的用户界面。我在 IIS Express 的 VS 中运行它。该解决方案在 VS 2013 中运行良好。迁移到 VS 2015 后,大摇大摆地没有显示任何方法。没有错误,只是空列表。返回的响应是:

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

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

4

1 回答 1

1

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

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

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

于 2015-09-17T08:47:56.163 回答