我有一个根UriTemplate,在没有指定参数时返回默认数据。
[WebGet(UriTemplate = "")]
我在几个例子中看到了这种方法。
但是,我添加了另一个接受简单路径变量的模板:
[WebGet(UriTemplate = "{code}")]
然后用代码过滤默认列表。
例如, http:// localhost / items (作为基本ServiceRoute)显示默认的项目列表, http:// localhost / items / ABC 显示项目'ABC'。
问题是现在 http:// localhost / items / help 现在显示404错误而不是自动生成的帮助页面,因为它将'help'视为''的值'代码'参数(当没有记录匹配时,操作返回“未找到”状态。)
有关如何保留UriTemplate但没有丢失帮助页面的任何想法?
答案 0 :(得分:0)
尝试添加.svc地址。
所以不要这样做:
http://localhost/items/help
喜欢
http://localhost/items.svc/help
这是在这里的评论: MSDN Rest Help
答案 1 :(得分:0)
帮助页面停止工作的原因是因为在helpEnabled
下定义为standardEndpoint
的{{1}}属性被某种方式替换为启用配置的wcf“soap”元数据。
因此,正确记录了用于在REST .Net 4.0中启用帮助页面的正确web.config部分:
webHttpEndpoint
即使我开始使用Microsoft / Tony Sneed模板来创建正确配置的REST项目,我认为发生的事情是我还向Web应用程序添加了OData服务。无论是否是原因,上述配置都被替换为:
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
现在,如果你盯着那么长时间并且凌晨1点谷歌'帮助页'wcf rest',这当然是如何为wcf'soap-style'服务启用wsdl'帮助',所以你看到匹配的语法和思考该帮助已正确启用REST,因此您将此问题归咎于UriTemplates。