无法在Swagger UI中看到odatcontroller派生的Action url



我目前正在尝试使用Swagger UI与我的OData启用Web API进行交互。

bits和bobs的版本如下:

。净4.5.2 ,Web API 2.2;NuGet包microsoft . asp.net .OData 6.0.0用于OData 4.0端点虚张声势5.3.2,虚张声势。5.3.2核心,虚张声势。OData 3.0.0 .

我的应用程序有一个SwaggerConfig.cs和一个WebApiConfig.cs。我遵循了这篇文章中的许多指示,这篇文章和其他一些在网上。

当我通过Visual Studio启动我的API时,我首先得到一个带有本地主机URL的新浏览器选项卡。如果我在该URL的末尾添加单词"/swagger"(没有引号),我将在同一选项卡中获得一个漂亮的swagger UI。这个选项卡显示了我的API的名称,但没有太多其他的。我没有看到ODataController派生的Controller公开的action的任何单独的URL接口。此外,在URL的显示名称下面,我所拥有的只是[base URL:, api版本:v1],其中"v1"来自SwaggerConfig.cs(与api名称相同)。

我知道我可以从Swagger UI与API对话,因为我可以通过适当地修改显示的URL来到达控制器的"Get"动作。创建的操作是标准的Get、Put、Post、Patch、Delete操作。但是我在Swagger UI中看不到这些。

这是因为我是新手,显然已经错过或错误编码的东西正确链接一切。我对SwaggerConfig.cs做了很少的改变,并保留了它创建时的大部分内容。我所做的重要更改是添加了这一行:

c。CustomProvider(defaultProvider => new ODataSwaggerProvider(defaultProvider, c, GlobalConfiguration.Configuration));

基于这些信息,如果有人可以指导我在哪些部分可能缺失或开发不正确的方向,我将非常感激。如果你有任何问题,我很乐意在评论中回答。

事实证明,因为我一直在重新创建应用程序,实体框架不再为我创建数据库,因为它试图使用它最近已经使用过的名称(一个已知的EF错误)。所以我把数据库的名字改成了别的名字。从那以后,事情就一帆风顺了。

这否定了我的评论:"我知道我可以从Swagger UI与API对话,因为我可以通过适当修改显示的URL到达控制器的"Get"操作。"创建的操作是标准的Get、Put、Post、Patch、Delete操作。但我在Swagger UI中看不到这些。"

显然这是我没有清楚地理解这个问题。但是通过一个接一个地重复步骤,我能够找到问题并找到所需的地方:)

最新更新