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}.