UriTemplateTable не различает глаголы - PullRequest
2 голосов
/ 23 апреля 2010

Я пытаюсь создать службу REST в .NET 3.5 с помощью WCF REST Contrib . Мой сервис почти работает нормально, но я сталкиваюсь со странной ошибкой.

В принципе, у меня есть два метода:

[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. " Source = "System.ServiceModel.Web"

Если я переименую второй метод в /books2?identity, он будет работать нормально.

Есть идеи, почему UriTemplateTable не различает глаголы?

1 Ответ

2 голосов
/ 27 апреля 2010

Наконец-то нашел решение.В файле web.config привязка должна быть указана как webHttpBinding (вместо значения по умолчанию basicHttpBinding).

<system.serviceModel>
  <services>
    <service name="Foo.MyService">
      <endpoint address="" binding="webHttpBinding" contract="Foo.MyService" />
    </service>
  </services>
</system.serviceModel>
...