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

use*_*928 3 c# asp.net-mvc odata asp.net-web-api

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

public class BaseApiController : ApiController
Run Code Online (Sandbox Code Playgroud)

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

public class BaseApiController : ODataController
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?谢谢

Bil*_*ill 6

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

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

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

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


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

如果您还使用"测试按钮"插件,如果您不熟悉odata,它可能无法正常工作,但您可以忽略默认内容并在其中放置正确的odata查询并执行它.

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

我要做的是,在帮助页面View中添加元数据的链接.

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