繁体   English   中英

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

[英]HelpPage for Web Api using OData not working

我正在使用默认的MVC帮助页面用于使用OData的Web API,它工作得很好但是如果我继承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. 然后将此行添加到每个实现要在帮助中显示的ODataController的控制器。
    [ApiExplorerSettings(IgnoreApi = false)]


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

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

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

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

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

这是预料之中的。 基于OData的控制器有意支持HelpPage。

О当然你可以在帮助页面上显示控制器和方法,只需输入一个属性:

[ApiExplorerSettings(IgnoreApi = false)]

您甚至可以显示将方法返回到此属性的内容:

[ResponseType(typeof(...))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM