WCF rest api - [WebGet] работает, но конечная точка не найдена для [WebInvoke(...GET...)]

Новое в настройке чего-либо на стороне сервера... заранее спасибо за вашу помощь!

Я пытаюсь получить простой API REST HelloWorld, работающий в VisualStudio2008 / .NET 3.5; в конечном итоге я буду использовать его для CRUD-тестирования данных / результатов обратно на сервер с различных мобильных устройств, работающих на локальной беспроводной сети.

Я нашел несколько других вопросов, ответы на которые меняют связанные части моего app.config, но ни один из них, похоже, не относится к этой конкретной проблеме (а метод проб и ошибок не дал результатов)

  • Мой запрос WebGet возвращает мои данные успешно.
  • Запрос Get с моим WebInvoke API возвращает ошибку "Конечная точка не найдена"

Вот мой ServiceContract:

[ServiceContract]
public interface IRestService
{
    [OperationContract]
    [WebInvoke(
        Method = "GET",
        ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "xml/{id}")]
    string XMLData(string id);  //Implemented as 'return "you requested " + id;'

    [OperationContract]
    [WebGet]
    string Test();              //Implemented as 'return "foobar";'

    [OperationContract]
    [WebGet]
    string Test2(string foo);   //Implemented as 'return "foobar=" + foo;'
}

И вот мой app.config

<services>
  <service name="MyRestService.IRestServiceImpl" behaviorConfiguration="MyServiceBehavior">

    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/foo/bar"/>
      </baseAddresses>
    </host>

    <endpoint address ="" binding="webHttpBinding" contract="MyRestService.IRestService" behaviorConfiguration="myRestBehavior" />

  </service>
</services>

<behaviors>

  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="myRestBehavior">
      <webHttp/>
    </behavior>
  </endpointBehaviors>

</behaviors>

Я запускаю через f5 в visualstudio (что, я думаю, означает, что у меня нет каких-либо проблем.svc / IIS, о которых стоит беспокоиться?), И пытаюсь подключиться через

http://localhost/foo/bar/Test
http://localhost/foo/bar/Test2   (  /ParamIgnored if I add one  )
http://localhost/foo/bar/XMLData/123

в моем браузере.

  • "Test" возвращает "foobar"
  • "Test2" возвращает "foobar=" (независимо от того, что "? Param" или "/param" я добавляю в конец URL
  • "XMLData" выдает ошибку "Конечная точка не найдена" (отображается как HTML в моем браузере)

Большое спасибо

1 ответ

Решение

Вы переопределили конечную точку XMLData для доступа к xml/{id}, но вы называете ее как XMLData/{id}.

Другие вопросы по тегам