c# - 使用 OData 的 Web Api HelpPage 不工作

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

我正在为使用 OData 的 Web API 使用默认的 MVC 帮助页面,它工作得很好,但如果我继承 ODataController 而不是 ApiController,则不会生成帮助页面。它显示空白。只有继承自 ApiController 的类才会显示在帮助页面上。

public class BaseApiController : ApiController

工作正常并在帮助页面中生成

public class BaseApiController : ODataController

即使 ODataController 继承自 ApiController,也不会生成帮助页面

有什么想法吗? 谢谢

最佳答案

这是你如何做的。这真的很容易,但也很危险!亲眼看到后,您可能不想这样做。

  1. 在您的 AppStart\ODataConfig.cs 文件中,确保将路由前缀设置为您在 AppStart\WebApiConfig.cs 中的任何前缀。在大多数情况下,它是 api。

    示例:config.Routes.MapODataRoute("odata", "api", model);

  2. 然后将这一行添加到实现的每个 Controller 您要在帮助中显示的 ODataController。
    [ApiExplorerSettings(IgnoreApi = false)]


原来如此。流行的 HelpPage 插件依赖于观察装饰器的 IApiExplorer。 OdataController 抽象类将此装饰器设置为 (IgnoreApi = true)。

如果您还使用“测试按钮”插件,如果您是 odata 新手,它可能无法按预期工作,但您可以忽略默认内容并在其中放置适当的 odata 查询并执行它。

现在真正糟糕的部分是,如果您的 odata 配置和常规 api 配置共享相同的前缀,您似乎会丢失 odata 导航。因此,考虑到帮助页面显示的 odata 常规过程不能直接使用,并且为了保留导航,指示的前缀将是错误的,不值得将其留在生产应用程序中。

我会做的是在帮助页面 View 中放置一个指向元数据的链接。

现在,如果我们能让 Microsoft 的某个人开源这个或为 odata Controller 更新它,那就太好了。

关于c# - 使用 OData 的 Web Api HelpPage 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056899/

相关文章:

c# - EF 核心不在迁移方法上创建表

C#/IIS/MVC : Static Conetent not loading on different environments

javascript - 当文件是比域更深的文件夹时,用JS访问文件

asp.net-mvc - 寻找第三方 CMS 与 MVC 站点集成

c# - Asp.NET MVC REST API : How to get Client Host Name

c# - 使用 Secret URL 将 Azure Key Vault 集成到 .NET Web API 应用程序中

c# - 使用 x11-api 和 Mono/C# 了解事件窗口

c# - 如何从连接字符串或 BlobServiceClient 获取帐户名和帐户 key ?

asp.net-mvc - 使用 web api 和 asp.net mvc 5 单点登录

c# - 如何将一组字符串从一个 ASP.NET 页面发送到另一个页面?