我正在使用默认的MVC帮助页面用于使用OData的Web API,它运行良好,但如果我继承ODataController而不是ApiController,则不会生成帮助页面。它显示为空白。只有继承自ApiController的类才会显示在帮助页面上。
public class BaseApiController : ApiController
工作正常并在帮助页面中生成
public class BaseApiController : ODataController
即使ODataController来自ApiController ,也不会生成帮助页面
有什么想法吗? 谢谢
答案 0 :(得分:6)
这是你如何做到的。这很容易,但也很危险!在你亲眼看到之后,你可能不想这样做。
在AppStart \ ODataConfig.cs文件中,确保将路由前缀设置为AppStart \ WebApiConfig.cs中的前缀。在大多数情况下,它是api。
示例:config.Routes.MapODataRoute(" odata"," api",model);
然后将此行添加到每个实现的控制器 要在帮助中显示的ODataController [ApiExplorerSettings(IgnoreApi = false)]
真的。流行的HelpPage插件依赖于观察装饰器的IApiExplorer。 OdataController抽象类将此装饰器设置为(IgnoreApi = true)。
如果您还使用了“测试按钮”'插件,如果你是odata的新手,它可能无法正常工作,但你可以忽略默认的东西并在那里放置一个合适的odata查询并执行它。
现在真正糟糕的部分是,如果你的odata配置和常规api配置共享相同的前缀,你似乎失去了odata导航。因此,帮助页面显示的odata常规过程不是直接消耗的,并且为了保留导航,指示的前缀是错误的,不值得将其留在生产应用程序中。
我会做的是在帮助页面View中添加元数据的链接。
现在,如果我们可以让某人在微软开源,或者为odata控制器更新它,那就太棒了。
答案 1 :(得分:0)
这是预期的。对于基于OData的控制器,有意不支持HelpPage。
答案 2 :(得分:0)
当然,您可以在帮助页面上显示控制器和方法,只需添加一个属性即可:
[ApiExplorerSettings(IgnoreApi = false)]
您甚至可以显示什么将您的方法返回到该属性:
[ResponseType(typeof(...))]