WCF REST帮助页面与UriTemplate冲突

时间:2012-07-26 16:48:27

标签: c# wcf rest

我有一个根UriTemplate,在没有指定参数时返回默认数据。

[WebGet(UriTemplate = "")]

我在几个例子中看到了这种方法。

但是,我添加了另一个接受简单路径变量的模板:

[WebGet(UriTemplate = "{code}")]

然后用代码过滤默认列表。

例如, http:// localhost / items (作为基本ServiceRoute)显示默认的项目列表, http:// localhost / items / ABC 显示项目'ABC'。

问题是现在 http:// localhost / items / help 现在显示404错误而不是自动生成的帮助页面,因为它将'help'视为''的值'代码'参数(当没有记录匹配时,操作返回“未找到”状态。)

有关如何保留UriTemplate但没有丢失帮助页面的任何想法?

2 个答案:

答案 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。