无法在Swagger UI中查看ODataController派生的操作URL

时间:2016-11-02 12:30:45

标签: c# asp.net .net asp.net-web-api odata

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

位和bobs的版本如下:

.Net 4.5.2 , Web API 2.2, NuGet包为Microsoft.AspNet.OData 6.0.0用于OData 4.0端点, Swashbuckle 5.3.2, Swashbuckle.Core 5.3.2, Swashbuckle.OData 3.0.0。

我的应用程序有一个SwaggerConfig.cs和一个WebApiConfig.cs按预期方式。我已经按照this articlethis article和网络上的其他一些说明执行了许多说明。

当我通过Visual Studio启动API时,我最初会获得一个带有本地主机URL的新浏览器选项卡。如果我附加" / swagger" (没有引号)在该URL的末尾,我在同一个选项卡中获得了一个很好的Swagger UI。此选项卡显示我的API的名称,但没有其他内容。我没有看到由我的ODataController派生的Controller公开的动作的任何单独的URL接口。此外,在显示的URL名称下面,我只有[base url:,api version:v1]其中" v1"来自SwaggerConfig.cs(与API名称相同)。

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

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

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

根据这些信息,如果有人可以指导我哪些部分可能丢失或开发不正确,我将非常感激。如果您对我有任何疑问,我很乐意在评论中回复。

1 个答案:

答案 0 :(得分:0)

事实证明,因为我一直在重新创建应用程序,所以实体框架不再为我创建数据库,因为它试图使用它最近使用的名称(已知的EF错误)。所以我将数据库的名称折射成其他东西。在此之后,事情一帆风顺。

这否定了我的评论:“我知道我可以通过Swagger UI与API交谈,因为我可以通过适当修改显示的URL来实现Controller的”Get“操作。创建的操作是标准的Get,Put, Post,Patch,Delete。但我在Swagger UI中看不到任何这些。“

显然,这是我不清楚地理解这个问题。但是通过逐个完成这些步骤,我能够找到问题并找到理想的位置:)