无法创建WCF RestFul服务的客户端

时间:2015-06-18 06:43:31

标签: asp.net web-services wcf rest

我是网络服务的新手。我正在尝试创建一个WCF Restful Web服务。我已经实现了一个接受参数名称的简单服务,当客户端请求服务时,它会用名称打印hello。

我创建了一个Web客户端,并将Web服务的引用添加到客户端。 根据我的研究,一旦我添加服务引用,它应该根据服务的web配置更新客户端的web.config,这是没有发生的。 问题是在添加服务引用之后甚至在运行svcutil.exe之后,都没有使用端点创建.config文件。这两种方式都没有生成所需的.config文件..

相关代码:

[ServiceContract]
    public interface IRestFulTest
    {
        [OperationContract]
    [WebInvoke(Method= "GET",ResponseFormat=WebMessageFormat.Xml, UriTemplate="xml/{Name}")]
        String sayhello(String name);
    }

service web.config

 <system.serviceModel>
    <services>
      <service name="ServiceDemo.RestFulTest">
        <endpoint behaviorConfiguration="WebBehavior" binding="webHttpBinding"
          bindingConfiguration="" contract="ServiceDemo.IRestFulTest" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="WebBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

可能出错了什么? 任何想法或建议都会非常感激。

2 个答案:

答案 0 :(得分:0)

在配置文件中未生成客户端端点配置的原因是从RESTful WCF服务is not supported生成客户端代码。

非SOAP HTTP服务没有元数据标准。作为服务的调用者,您只需直接调用它即可。

您可以通过多种方式使用.net中的RESTful端点,包括:

  1. 使用WebChannelFactory
  2. 使用旧的HttpClient
  3. 使用WebClient

答案 1 :(得分:0)

我自己找到了答案。在我的服务中,我没有为满足数据交换声明端点,因为当我尝试将服务引用添加到客户端时,未生成所需的app.config。

添加元数据交换的终点解决了这个问题。

 **<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>**

我希望它可以节省其他人的大量时间和头部撞击。