2

我试图用WCF REST Contrib在 .NET 3.5 中设计一个 REST 服务。我的服务几乎可以正常工作,但我面临一个奇怪的错误。

基本上,我有两种方法:

[WebInvoke(UriTemplate = "/books?id={identity}", Method = "PUT")]
public string InsertBook(string identity, Book book)
{
 // snipped
}

[WebInvoke(UriTemplate = "/books?id={identity}", Method = "GET")]
public Books[] ListBooks(string identity)
{
 // snipped
}

但是我在激活时收到错误消息:

System.InvalidOperationException 未被用户代码处理 Message="UriTemplateTable 不支持具有与模板'/books?id={identity}' 等效路径但具有不同查询字符串的多个模板,其中查询字符串不能全部通过文字值消除歧义.有关更多详细信息,请参阅 UriTemplateTable 的文档。” 来源="系统.ServiceModel.Web"

如果我重命名第二种方法,/books2?identity那么它可以正常工作。

知道为什么UriTemplateTable不区分动词吗?

4

1 回答 1

2

终于找到了解决办法。在 web.config 中,绑定必须指定为webHttpBinding(而不是默认值basicHttpBinding)。

<system.serviceModel>
  <services>
    <service name="Foo.MyService">
      <endpoint address="" binding="webHttpBinding" contract="Foo.MyService" />
    </service>
  </services>
</system.serviceModel>
于 2010-04-27T16:22:41.257 回答