使用OData无法正常工作的Web页面帮助页面

时间:2014-02-27 00:58:26

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

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

public class BaseApiController : ApiController

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

public class BaseApiController : ODataController
即使ODataController来自ApiController

也不会生成帮助页面

有什么想法吗? 谢谢

3 个答案:

答案 0 :(得分:6)

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

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

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

  2. 然后将此行添加到每个实现的控制器 要在帮助中显示的ODataController     [ApiExplorerSettings(IgnoreApi = false)]


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

    如果您还使用了“测试按钮”'插件,如果你是odata的新手,它可能无法正常工作,但你可以忽略默认的东西并在那里放置一个合适的odata查询并执行它。

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

    我会做的是在帮助页面View中添加元数据的链接。

    现在,如果我们可以让某人在微软开源,或者为odata控制器更新它,那就太棒了。

答案 1 :(得分:0)

这是预期的。对于基于OData的控制器,有意支持HelpPage。

答案 2 :(得分:0)

当然,您可以在帮助页面上显示控制器和方法,只需添加一个属性即可:

[ApiExplorerSettings(IgnoreApi = false)]

您甚至可以显示什么将您的方法返回到该属性:

[ResponseType(typeof(...))]