[英]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,也不会生成帮助页面
有任何想法吗? 谢谢
这是你如何做到的。 它真的很容易,但它也很危险! 在您亲眼看到它之后,您可能不想这样做。
在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控制器更新它,那就太好了。
这是预料之中的。 基于OData的控制器有意不支持HelpPage。
О当然你可以在帮助页面上显示控制器和方法,只需输入一个属性:
[ApiExplorerSettings(IgnoreApi = false)]
您甚至可以显示将方法返回到此属性的内容:
[ResponseType(typeof(...))]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.