我正在为使用 OData 的 Web API 使用默认的 MVC 帮助页面,它工作得很好,但如果我继承 ODataController 而不是 ApiController,则不会生成帮助页面。它显示空白。只有继承自 ApiController 的类才会显示在帮助页面上。
public class BaseApiController : ApiController
工作正常并在帮助页面中生成
public class BaseApiController : ODataController
即使 ODataController 继承自 ApiController,也不会生成帮助页面
有什么想法吗? 谢谢
最佳答案
这是你如何做的。这真的很容易,但也很危险!亲眼看到后,您可能不想这样做。
在您的 AppStart\ODataConfig.cs 文件中,确保将路由前缀设置为您在 AppStart\WebApiConfig.cs 中的任何前缀。在大多数情况下,它是 api。
示例:config.Routes.MapODataRoute("odata", "api", model);
然后将这一行添加到实现的每个 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/