我有一个根UriTemplate,它在没有指定参数时返回默认数据。
[WebGet(UriTemplate = "")]我在几个例子中看到了这种方法。
但是,我添加了另一个接受简单路径变量的模板:
[WebGet(UriTemplate = "{code}")]然后通过代码过滤默认列表。
例如,http://localhost/items (作为基本ServiceRoute)显示默认的项列表,http://localhost/items/ABC显示项'ABC‘。
问题是,现在http://localhost/items/help显示了一个404错误,而不是自动生成的帮助页面,因为它将' help‘看作'code’参数的一个值(当没有记录匹配时,该操作返回"Not“状态)。
对于如何保留该UriTemplate,但不丢失帮助页,有什么想法吗?
发布于 2012-07-26 23:10:04
帮助页面停止工作的原因是,定义为helpEnabled的webHttpEndpoint下的standardEndpoint属性被wcf的soap元数据以某种方式替换为启用配置。
因此,在REST web.config 4.0中启用帮助页的正确的.Net部分是,正如详细记录的那样:
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
尽管我从微软/Tony模板开始创建REST项目,该项目正确地配置了这个项目,但我认为发生的情况是,我还向web应用程序添加了一个OData服务。无论这是否是原因,上面的配置都被替换为:
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>现在,如果你盯着这段时间,谷歌‘帮助页wcf’凌晨一点,这当然是如何启用wsdl‘帮助’wcf‘soap风格’服务,所以你看到匹配的语法,并认为帮助是正确的休息,所以你把这个问题归咎于UriTemplates。
发布于 2012-07-26 17:10:16
尝试添加您的.svc地址。
所以,不要像这样做:
http://localhost/items/help做得像
http://localhost/items.svc/help它在这里的评论中:MSDN Rest帮助
https://stackoverflow.com/questions/11674124
复制相似问题