WCF休息api - [WebGet]工作,但找不到[WebInvoke(... GET ...)]的端点

时间:2013-05-17 17:47:09

标签: c# wcf rest crud webinvoke

配置任何服务器端的新功能......提前感谢您的帮助!

我正在尝试在VisualStudio2008 / .NET 3.5中使用一个简单的HelloWorld REST api;最终我将把它用于CRUD测试数据/结果从本地无线局域网上运行的各种移动设备返回服务器。

我发现了许多其他问题,他们的答案会改变我的app.config的相关部分,但似乎没有一个问题适用于这个特定的问题(并且试验和错误没有产生任何结果)

  • 我的WebGet查询成功返回我的数据。
  • 使用我的WebInvoke api获取请求会返回错误“Endpoint not found”

这是我的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>

  

我在visualstudio中通过f5运行(我认为这意味着我没有担心任何.svc / IIS的东西?),并试图通过

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

在我的浏览器上。

  • '测试'返回'foobar'
  • 'Test2'返回'foobar ='(无论是什么'?param'或'/ param'我添加到URL的尾部
  • 'XMLData'给出错误'未找到端点'(在我的浏览器中显示为html)

非常感谢

1 个答案:

答案 0 :(得分:4)

您已覆盖要在xml / {id}上访问的XMLData端点,但您将其称为XMLData / {id}。