Как вы используете службу RESTful WCF из проекта ASP, используя ссылку на службу? - PullRequest
0 голосов
/ 13 июля 2011

Я занимаюсь разработкой службы RESTful WCF, которую затем хочу использовать из отдельного проекта ASP.net.

Можно ли использовать ссылку на службу из проекта ASP для ее использования?с использованием REST или все ссылки на службы обрабатываются как SOAP?

Существует множество примеров использования библиотеки служб в качестве ссылки на службу или использования службы REST с использованием начального инструментария WCF с использованием HttpClient, но яне найден тот, который делает то, что я надеялся сделать.

Ниже приведен фрагмент файла ASP.Net web.config, который автоматически генерируется при добавлении ссылки на службу.Как видите, в нем упоминается SOAP.

  <system.serviceModel>
  <bindings>
   <customBinding>
    <binding name="WebHttpBinding_IDataCaptureService">
     <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
      messageVersion="Soap12" writeEncoding="utf-8">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
       maxBytesPerRead="4096" maxNameTableCharCount="16384" />
     </textMessageEncoding>
    </binding>
   </customBinding>
  </bindings>
  <client>
   <endpoint binding="customBinding" bindingConfiguration="WebHttpBinding_IDataCaptureService"
    contract="testRef.IDataCaptureService" name="WebHttpBinding_IDataCaptureService" />
  </client>
 </system.serviceModel>

Вот выдержка из сервиса web.config

<system.serviceModel>
    <services>
        <service behaviorConfiguration="DataCaptureService.Service1Behavior" name="eCRB.Service.DataCapture">
            <endpoint address="" behaviorConfiguration="webBehaviour" binding="webHttpBinding" bindingConfiguration="" contract="eCRB.Service.IDataCaptureService">
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
    <behaviors>
        <endpointBehaviors>
            <behavior name="webBehaviour">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="DataCaptureService.Service1Behavior">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <bindings>
        <webHttpBinding>
            <binding name="webBinding">
                <security mode="None">
                    <transport clientCredentialType="None"/>
                </security>
            </binding>
        </webHttpBinding>
    </bindings>
</system.serviceModel>

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

Посмотрите на службы данных ADO.Net, которые специально поддерживают остальные API и будут возвращать данные в форматах, отличных от XML, например, JSON

http://msdn.microsoft.com/en-us/data/bb931106

ОБНОВЛЕНИЕ:

Я вижу, что теперь это ребрендинг служб данных WCF

2 голосов
/ 13 июля 2011

По большей части вы не можете.Причина в том, что служба REST не предоставляет никаких стандартизированных метаданных, которые VS2010 может использовать для добавления ссылки на службу.Я сказал, по большей части, и это потому, что WCF Data Services, или, точнее, OData, предоставляет метаданные и позволяет вам добавлять ссылку на службу добавления.

1 голос
/ 13 июля 2011

Невозможно использовать службу REST со ссылкой на службу из какого-либо проекта, поскольку ссылка на службу предназначена только для служб SOAP. Как использовать службу REST .

HttpClient не является частью какой-либо текущей версии WCF.Он был включен в REST Starter Kit, который был только предварительным просмотром сообщества и никогда не достигал окончательной производственной версии, а теперь он включен в Web-API , который является CTP компонентов REST из будущей версии WCF.

...